web-dev-qa-db-fra.com

Comment obtenir un profil d'utilisateur à l'aide de Google Access Token

je teste l'obtention d'informations d'utilisateur par jeton d'accès Google

http://www.mawk3y.net/glogin

après avoir cliqué sur le bouton de connexion, je suis redirigé vers 

https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=access_token_here

Et obtenez des données JSON comme celle-ci

{
"issued_to": "my client id.apps.googleusercontent.com",
"audience": "my client id.apps.googleusercontent.com",
"user_id": "user id here",
"scope": "https://www.googleapis.com/auth/plus.login",
"expires_in": 3596,
"access_type": "online"
}

maintenant, j'ai besoin de savoir comment extraire le nom d'utilisateur, l'adresse et l'adresse e-mail, s'il vous plaît?

merci d'avance

13
jq beginner

Essaye celui-là:

 var url = 'https://www.googleapis.com/plus/v1/people/me?access_token={access_token}';

  $.ajax({
    type: 'GET',
    url: url,
    async: false,
    success: function(userInfo) {
      //info about user
      console.log(userInfo);
      console.log('test');
    },
    error: function(e) {
      console.log('error');

    }
  });
15
betmakh

Vous pouvez vérifier le jeton d'authentification reçu après la connexion Google sur votre serveur à l'aide de cette API.

Demande

https://www.googleapis.com/oauth2/v3/tokeninfo?id_token={accces_token}

Réponse

{

  "email_verified": "true",
  "email": "[email protected]",
  "name": "abhinav srivastava",
  "picture": "https://lh3.googleusercontent.com/-xgD_zFj1EgY/AAAAAAAAAAI/AAAAAAAACZ0/fnecSQ03o0Y/s96-c/photo.jpg",
  "given_name": "abhinav",
  "family_name": "srivastava",
  "locale": "en",
  ...
  ...
}

la source

10
HimalayanCoder

Vous devez utiliser le jeton d'accès (vous l'avez dans l'URL de redirection) pour accéder à l'API Google People. Découvrez les spécifications ici .

Vous pourriez trouver le terrain de jeu OAuth2 de Google plutôt utile pour avoir une idée de la façon d'utiliser les jetons d'accès pour accéder aux API de Google. 

Bonne chance!

3
Miguel Andres

Vérifiez this . Il y a exemple avec la démo

Extrait de code:

$accountObj = call_api($_SESSION['accessToken'],"https://www.googleapis.com/oauth2/v1/userinfo");

call_api appelle l'API et récupère les données:

function call_api($accessToken,$url){
    $curl = curl_init($url);

    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    $curlheader[0] = "Authorization: Bearer " . $accessToken;
    curl_setopt($curl, CURLOPT_HTTPHEADER, $curlheader);

    $json_response = curl_exec($curl);
    curl_close($curl);

    $responseObj = json_decode($json_response);

    return $responseObj;       
}

À partir de l'objet de compte, le nom peut être consulté:

$your_name =  $accountObj->name;
1
RealNmae

Vous pouvez utiliser le démarrage rapide et voir l'exemple ici: sample
Et voici une description de People: get

1
Reza Abbasi

Ceci est un simple code nodejs côté serveur.

 var express = require('express');
 var appln = express();
 var google = require('googleapis');
 var plus = google.plus('v1');
 var OAuth = google.auth.OAuth2;
 var oauth2client = new OAuth(YOUR_CLIENT_ID  , YOUR_SECRET_ID ,  CALLBACK_REDIRECT_URI );

 appln.get("/tokens" , function(req , res ) {
         var code = req.query.code;
       oauth2client.getToken( code , function( err , tokens ){
                         if(err){
                            console.log(err);
                            res.send(err);
                            return;
                            }
                 oauth2client.setCredentials(tokens);
                 actoken = tokens.access_token;
                 reftoken = tokens.refresh_token;

       plus.people.get({  
                  userId: 'me',
                  auth: oauth2client
                  }, function (err, response) {
               // handle err and response
               var name = ""+response.displayName;
               var id =  ""+response.id;
               var age = ""+response.ageRange.min;
               if(err) console.log(err);
               console.log("Name : ", name," ",id,"",age);    
               res.send(response);

           });




        });
  });                       
1
Taani

SI VOUS UTILISEZ PHP

Vous pouvez vérifier ici . En bref, le code que vous recherchez est le suivant:

$payload = $client->verifyIdToken($id_token);

Ici, charge utile contient les informations dont vous avez besoin, tant que vous ajoutez les étendues nécessaires.

0
NecipAllef