function gauth_response_handler in Google Auth 7
Same name and namespace in other branches
- 7.2 gauth.module \gauth_response_handler()
Function to handle authentication and response from google.
Parameters
string $account_id: Account id of the account to be authenticated.
1 call to gauth_response_handler()
- gauth_account_authenticate in ./
gauth.module - Authenticate a google account.
1 string reference to 'gauth_response_handler'
- gauth_menu in ./
gauth.module - Implements hook_menu().
File
- ./
gauth.module, line 168 - Google Auth Api for drupal.
Code
function gauth_response_handler($account_id = NULL) {
$info = libraries_load('google-api-php-client');
if (!$info['loaded']) {
drupal_set_message(t("Can't authenticate with google as library is missing check Status report or Readme for requirements"), 'error');
return FALSE;
}
if ($account_id == NULL && isset($_SESSION['gauth_account_id'])) {
$account_id = $_SESSION['gauth_account_id'];
}
elseif ($account_id) {
$_SESSION['gauth_account_id'] = $account_id;
}
if ($account_id) {
$account = gauth_account_load($account_id, FALSE);
if (isset($account['client_id']) && isset($account['developer_key']) && isset($account['client_secret'])) {
$client = new Google_Client();
$client
->setApplicationName("Google OAuth2");
$client
->setClientId($account['client_id']);
$client
->setClientSecret($account['client_secret']);
$client
->setRedirectUri(gauth_callback_url());
$client
->setDeveloperKey($account['developer_key']);
if ($account['access_type'] == 'offline') {
$client
->setApprovalPrompt('force');
}
$client
->setAccessType($account['access_type']);
$scopes = gauth_google_services_scopes(explode(",", $account['services']));
// Let other modules change scopes
drupal_alter('gauth_account_scopes', $scopes, $account['id']);
$client
->addScope($scopes);
}
if (isset($_GET['code'])) {
$client
->fetchAccessTokenWithAuthCode($_GET['code']);
$account['access_token'] = json_encode($client
->getAccessToken());
gauth_account_save($account);
unset($_SESSION['gauth_account_id']);
if (!user_access('administer site configuration') && module_exists('gauth_user')) {
drupal_goto('user/' . $GLOBALS['user']->uid . '/gauth');
}
else {
drupal_goto('admin/config/services/gauth_account');
}
drupal_set_message(t('Api Account saved'));
}
if ($client) {
$auth_url = $client
->createAuthUrl();
drupal_goto($auth_url);
}
}
// Let other modules act of google response.
module_invoke_all('gauth_google_response');
}