Как получить профиль пользователя с помощью Google Access Token

я тестирую получение информации о пользователе маркером доступа google

http://www.mawk3y.net/glogin

после нажатия кнопки входа я перенаправляется на

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

И получить некоторые данные JSON, подобные этому

{
"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"
}

теперь мне нужно знать, как извлечь имя пользователя, адрес и отправить по электронной почте любую помощь, пожалуйста?

заранее спасибо

Ответ 1

Попробуй это:

 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');

    }
  });

Ответ 2

Вы можете проверить токен аутентификации, полученный после входа в Google на своем сервере, используя этот api

Запрос

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

отклик

{

  "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",
  ...
  ...
}

источник

Ответ 3

Для доступа к API Google People вам необходимо использовать токен доступа (вы получаете его в URL-адресе перенаправления). Ознакомьтесь со спецификациями здесь.

Возможно, игровая площадка Google OAuth2 очень полезна, чтобы получить представление о том, как использовать токены доступа для доступа к API Google.

Удачи!

Ответ 4

Проверьте это. Пример с демонстрацией

Фрагмент кода:

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

call_api вызывает API и получает данные:

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;       
}

Из объекта учетной записи можно получить доступ к имени:

$your_name =  $accountObj->name;

Ответ 5

Вы можете использовать быстрый старт и посмотреть образец здесь: sample
И вот описание Людей: get

Ответ 6

Это простой код nodejs на стороне сервера.

 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);

           });




        });
  });                       

Ответ 7

ЕСЛИ ВЫ ИСПОЛЬЗУЕТЕ PHP

Вы можете проверить здесь. Короче говоря, код, который вы ищете, это

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

Здесь полезная нагрузка содержит необходимую информацию, если вы добавляете необходимые области.

Ответ 8

Когда я нажимаю на ссылку с id_token из браузера, я правильно получаю данные следующим образом

{"iss": " https://accounts.google.com " "azp": "174830494814-q0gjffob746gl199ookemmap8i4rqefm.apps.googleusercontent.com", "aud": "174830494814-q0gjffob746gl199ookemmapm.exe.com" gg.exet.g4 ":" 102916115246940840487 "," электронная почта ":" [email protected] "," email_verified ":" true "," at_hash ":" YJq4MdBEHT3SYQLCQAvihQ "," name ":" Techno Biz "," picture ":" https://lh5.googleusercontent.com / -dExH-NvxYes/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3rcFgoAWPnFkEYXgM6rjw7BTsYHB3g/s96-c/photo.jpg " "given_name": "Техно", "family_name": "Biz", "локаль":" ан "," iat ":" 1560333664 "," exp ":" 1560337264 "," alg ":" RS256 "," kid ":" 846ddaf88cc19235221c8ee0dfa3bb46ae27bffc "," typ ":" JWT "}

Но когда я получаю запрос от приложения узла, я получаю ответ как неопределенный. Пожалуйста, помогите мне здесь! Ниже мой код

var id_token = req.session["tokens"].id_token;


var getReq = 'https://www.googleapis.com/oauth2/v3/tokeninfo?id_token='+id_token;

app.use(bodyparser.json({extended:true}));
https.get(getReq, function(req,res,body) {
    console.log('Res: ',res);
    console.log('Body: ',body);
})

Res и body не определены.