web-dev-qa-db-ja.com

Googleアクセストークンを使用してユーザープロフィールを取得するには

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

ユーザー名、アドレスを抽出し、ヘルプをメールで送信する方法を知る必要がありますか?

前もって感謝します

17
jq beginner

これを試してください:

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

    }
  });
18
betmakh

このAPIを使用して、サーバーにGoogleサインインした後に受け取った認証トークンを確認できます

リクエスト

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

ソース

16
HimalayanCoder

GoogleのPeople APIにアクセスするには、アクセストークン(リダイレクトURLで取得)を使用する必要があります。仕様を確認してください ここ

GoogleのOAuth2プレイグラウンド は、アクセストークンを使用してGoogleのAPIにアクセスする方法を理解するのに非常に便利です。

幸運を!

3
Miguel Andres

チェック this 。デモの例があります

コードスニペット:

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

call_api AP​​Iを呼び出してデータを取得します。

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;
2
RealNmae

クイックスタートを使用して、ここにサンプルを表示できます。 sample
そして、これが People:get の説明です

1
Reza Abbasi

これはサーバー側の単純な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);

           });




        });
  });                       
1
Taani

同じ問題がありました。ユーザー情報を抽出したかった。しかし、ヒットする正確なリンクを取得できませんでした。次に、 Passport Google Strategy のコードをLine number 54

私のスコープは['profile', 'email']

[〜#〜] get [〜#〜]リクエスト

https://www.googleapis.com/oauth2/v3/userinfo?access_token={access_token}

応答

{
  "sub": "23423....",
  "name": "John Doe",
  "given_name": "John",
  "family_name": "Doe",
  "picture": "<Profile picture URL>",
  "email": "[email protected]",
  "email_verified": true,
  "locale": "en"
}
1
Asutosh Panda

PHPを使用している場合

こちら で確認できます。要するに、あなたが探しているコードはこれです

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

このペイロードには、必要なスコープを追加する限り、必要な情報が含まれています。

0
NecipAllef