Invlid_grant When trying to refresh token - Google Oauth - PHP -
just started using google admin sdk,trying retrieve specific user's infomation. keep getting same error on , over
[29-may-2015 14:41:18 africa/tunis] php fatal error: uncaught exception 'google_auth_exception' message 'error refreshing oauth2 token, message: '{ "error" : "invalid_grant"
during research found it's syncing problem(server time) web app hosted on third party server.checked service account credentials
ps: don't know if matters server's time zone gmt+1
`
<?php require 'src/google/autoload.php'; session_start(); $timestamp = $_server['request_time']; echo gmdate("y-m-d\th:i:s\z", $timestamp); $service_account_name = "xx"; $key_file_location = "yyy.p12"; $client = new google_client(); $client->setapplicationname("members"); $directory = new google_service_directory($client); if (isset($_session['service_token']) && $_session['service_token']) { $client->setaccesstoken($_session['service_token']); } $key = file_get_contents($key_file_location); $cred = new google_auth_assertioncredentials( // replace email address client. $service_account_name, // replace scopes requesting. array('https://www.googleapis.com/admin/directory/v1/users'), $key, 'notasecret' ); $cred->sub = "admin-email"; $client->setassertioncredentials($cred); if ($client->getauth()->isaccesstokenexpired()) { $client->getauth()->refreshtokenwithassertion($cred); } $_session['service_token'] = $client->getaccesstoken(); $email = "personto lookfor-email"; $r = $dir->users->get($email); if($r) { echo "name: ".$r->name->fullname."<br/>"; echo "suspended?: ".(($r->suspended === true) ? 'yes' : 'no')."<br/>"; echo "org/unit/path: ".$r->orgunitpath."<br/>"; } else { echo "user not exist: $email<br/>"; // if user doesn't exist, it's safe create new user }
`
the reason of "invalid grant" error may due refresh token not working. happens when number of refresh tokens exceeds limit, older tokens become invalid. if application attempts use invalidated refresh token, invalid_grant error response returned. here link more documentation.
Comments
Post a Comment