Obtenir des informations utilisateur via Google API

Est-il possible d'obtenir des informations à partir du profil de L'utilisateur via L'API Google? Si c'est possible, quelle API dois-je utiliser?

Je suis intéressant dans de telles informations:

Aussi, il serait cool d'obtenir d'autres informations du profil de l'utilisateur.

79
demandé sur glagola 2011-08-20 12:21:35

6 réponses

Ajouter à la portée - https://www.googleapis.com/auth/userinfo.profile

Et après l'autorisation, obtenez les informations de - https://www.googleapis.com/oauth2/v1/userinfo?alt=json

Il a beaucoup de choses - y compris le nom, l'url du profil public, le sexe, la photo, etc.

96
répondu Abhinav Manchanda 2011-08-21 13:10:38

Champ d'application - https://www.googleapis.com/auth/userinfo.profile

return youraccess_token = access_token

Obtenir https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=youraccess_token

, Vous obtiendrez json:

{
 "id": "xx",
 "name": "xx",
 "given_name": "xx",
 "family_name": "xx",
 "link": "xx",
 "picture": "xx",
 "gender": "xx",
 "locale": "xx"
}

À Tahir Yasin:

Ceci est un exemple php.
Vous pouvez utiliser la fonction json_decode pour obtenir le tableau userInfo.

$q = 'https://www.googleapis.com/oauth2/v1/userinfo?access_token=xxx';
$json = file_get_contents($q);
$userInfoArray = json_decode($json,true);
$googleEmail = $userInfoArray['email'];
$googleFirstName = $userInfoArray['given_name'];
$googleLastName = $userInfoArray['family_name'];
77
répondu eason 2014-04-23 13:03:08

Cette portée https://www.googleapis.com/auth/userinfo.profile {[2] } a été obsolète maintenant. S'il vous plaît regardez https://developers.google.com/+/api/auth-migration#calendrier.

La nouvelle portée que vous utiliserez pour obtenir des informations de profil est: profile ou https://www.googleapis.com/auth/plus.login

Et le point de terminaison est - https://www.googleapis.com/plus/v1/people/{idutilisateur} - nom d'utilisateur peut être juste moi pour l'utilisateur actuellement connecté.

25
répondu user872858 2014-03-17 16:23:21

J'utilise PHP et j'ai résolu cela en utilisant la version 1.1.4 de google-api-PHP-client

En supposant que le code suivant est utilisé pour rediriger un utilisateur vers la page d'authentification Google:

 $client = new Google_Client();
 $client->setAuthConfigFile('/path/to/config/file/here');
 $client->setRedirectUri('https://redirect/url/here');
 $client->setAccessType('offline'); //optional
 $client->setScopes(['profile']); //or email
 $auth_url = $client->createAuthUrl();
 header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
 exit();

En supposant qu'un code d'authentification valide est retourné au redirect_url, ce qui suit génère un jeton à partir du code d'authentification et fournit des informations de profil de base:

 //assuming a successful authentication code is return
 $authentication_code = 'code-returned-by-google';
 $client = new Google_Client();
 //.... configure $client object code goes here
 $client->authenticate($authentication_code);
 $token_data = $client->getAccessToken();

 //get user email address
 $google_oauth =new Google_Service_Oauth2($client);
 $google_account_email = $google_oauth->userinfo->get()->email;
 //$google_oauth->userinfo->get()->familyName;
 //$google_oauth->userinfo->get()->givenName;
 //$google_oauth->userinfo->get()->name;
 //$google_oauth->userinfo->get()->gender;
 //$google_oauth->userinfo->get()->picture; //profile picture

Cependant, l'emplacement n'est pas retourné. Les nouveaux comptes YouTube n'ont pas YouTube spécifique nom d'utilisateur

19
répondu singh1469 2017-05-30 08:43:01

J'utilise Google API pour. Net, mais sans doute vous pouvez trouver la même façon d'obtenir cette information en utilisant une autre version de L'API. Comme user872858 mentionné, la portée userinfo.le profil a été déprécié (Article google ).

Pour obtenir des informations de profil d'utilisateur, j'utilise le code suivant (partie réécrite de l'exemple de google):

IAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow(
                                  new GoogleAuthorizationCodeFlow.Initializer
                                      {
                                            ClientSecrets = Secrets,
                                            Scopes = new[] { PlusService.Scope.PlusLogin,"https://www.googleapis.com/auth/plus.profile.emails.read"  }
                                       });    
TokenResponse _token = flow.ExchangeCodeForTokenAsync("", code, "postmessage", 
                              CancellationToken.None).Result;

                    // Create an authorization state from the returned token.
                    context.Session["authState"] = _token;

                    // Get tokeninfo for the access token if you want to verify.
                    Oauth2Service service = new Oauth2Service(
                     new Google.Apis.Services.BaseClientService.Initializer());
                    Oauth2Service.TokeninfoRequest request = service.Tokeninfo();
                    request.AccessToken = _token.AccessToken;
                    Tokeninfo info = request.Execute();
                    if (info.VerifiedEmail.HasValue && info.VerifiedEmail.Value)
                    {
                        flow = new GoogleAuthorizationCodeFlow(
                                    new GoogleAuthorizationCodeFlow.Initializer
                                         {
                                             ClientSecrets = Secrets,
                                             Scopes = new[] { PlusService.Scope.PlusLogin }
                                          });

                        UserCredential credential = new UserCredential(flow, 
                                                              "me", _token);
                        _token = credential.Token;
                        _ps = new PlusService(
                              new Google.Apis.Services.BaseClientService.Initializer()
                               {
                                   ApplicationName = "Your app name",
                                   HttpClientInitializer = credential
                               });
                        Person userProfile = _ps.People.Get("me").Execute();
                    }

Que, vous pouvez accéder à presque n'importe quoi en utilisant userProfile.

UPDATE: pour que ce code fonctionne, vous devez utiliser les étendues appropriées sur le bouton de connexion google. Par exemple mon bouton:

     <button class="g-signin"
             data-scope="https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.profile.emails.read"
             data-clientid="646361778467-nb2uipj05c4adlk0vo66k96bv8inqles.apps.googleusercontent.com"
             data-accesstype="offline"
             data-redirecturi="postmessage"
             data-theme="dark"
             data-callback="onSignInCallback"
             data-cookiepolicy="single_host_origin"
             data-width="iconOnly">
     </button>
5
répondu LaoR 2014-07-16 09:57:53

Si vous êtes dans un environnement web côté client, la nouvelle API JavaScript auth2 contient une fonction getBasicProfile() indispensable, qui renvoie le nom de l'utilisateur, l'adresse e-mail et L'URL de l'image.

Https://developers.google.com/identity/sign-in/web/reference#googleusergetbasicprofile

1
répondu alalonde 2015-11-02 19:10:20