Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get Userinfo from Google OAuth 2.0 PHP API

Tags:

I am trying to use Google Oauth API to get userinfo. It works perfectly for Google Plus API but I am trying to create a backup in case the user doesn't have google plus account. The authentication process is correct and I even get the $userinfo object but how exactly do I access the properties. I tried $userinfo->get() but it only return the id of the user.

Am I doing something wrong? Here is the code that I am using...

require_once '../../src/Google_Client.php'; require_once '../../src/contrib/Google_Oauth2Service.php';  session_start();  $client = new Google_Client(); $client->setApplicationName("Google+ PHP Starter Application"); // Visit https://code.google.com/apis/console to generate your // oauth2_client_id, oauth2_client_secret, and to register your oauth2_redirect_uri.  $client->setClientId('*********************');  $client->setClientSecret('**************');  $client->setRedirectUri('***************');  $client->setDeveloperKey('**************'); $plus = new Google_Oauth2Service($client);  if (isset($_REQUEST['logout'])) {   unset($_SESSION['access_token']); }  if (isset($_GET['code'])) {   $client->authenticate($_GET['code']);   $_SESSION['access_token'] = $client->getAccessToken();   header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']); }  if (isset($_SESSION['access_token'])) {   $client->setAccessToken($_SESSION['access_token']); }  if ($client->getAccessToken())  {     $userinfo = $plus->userinfo;     print_r($userinfo->get());  } else  {     $authUrl = $client->createAuthUrl(); } ?> <!doctype html> <html> <head>   <meta charset="utf-8">   <link rel='stylesheet' href='style.css' /> </head> <body> <header><h1>Google+ Sample App</h1></header> <div class="box">  <?php if(isset($personMarkup)): ?> <div class="me"><?php print $personMarkup ?></div> <?php endif ?>  <?php   if(isset($authUrl)) {     print "<a class='login' href='$authUrl'>Connect Me!</a>";   } else {    print "<a class='logout' href='?logout'>Logout</a>";   } ?> </div> </body> </html> 

Thanks...

**EDIT*** Was missing Scopes--Added

 $client->setScopes(array('https://www.googleapis.com/auth/userinfo.email','https://www.googleapis.com/auth/userinfo.profile')); 

works now...

like image 303
Kshitiz Avatar asked Dec 22 '12 23:12

Kshitiz


1 Answers

Was missing scopes

$client->setScopes(array('https://www.googleapis.com/auth/userinfo.email','https://www.googleapis.com/auth/userinfo.profile')); 

Works like a charm now!

like image 70
Kshitiz Avatar answered Sep 20 '22 22:09

Kshitiz