2013-05-11 6 views
7

Я тестирую получение информации о пользователях с помощью 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" 
} 

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

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

ответ

3

Вы должны использовать маркер доступа (вы получите его в URL переадресации), чтобы получить доступ к Google, People API. Ознакомьтесь с характеристиками here.

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

Удачи вам!

+1

я получаю эту ошибку { "ошибка": { "ошибки": [{ "домен": "usageLimits", "разум": "dailyLimitExceededUnreg", "сообщение": «ежедневный предел для анонимных использования Exceeded Для продолжения использования требуется регистрация. "," ExtendedHelp ":" https://code.google.com/apis/console "}]," code ": 403," message ":" Daily Limit for Unauthenticated Use Exceeded. Продолжающееся использование требует регистрации. "}} , когда я создаю http, получаю этот url $ response = file_get_contents (" https://www.googleapis.com/plus/v1/people/me "); echo $ response; –

+0

и когда я использую этот код $ response = file_get_contents ("https://www.googleapis.com/plus/v1/people/MY ИДЕНТИФИКАТОР ЗДЕСЬ? Поля = день рождения% 2CcurrentLocation% 2CdisplayName% 2Cemails% 2Cgender% 2Cname & key = { MY API KEY HERE} "); echo $ response; Я получаю эту ошибку {" error ": {" errors ": [{" domain ":" usageLimits "," reason ":" keyInvalid "," message " : «Bad Request»}], «code»: 400, «message»: «Bad Request»}} , и я просто скопировал и вставил обновленный ключ API, поэтому я уверен, что он активен –

0

Проверить this. Существует пример с демо

Код сниппета:

$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; 
+0

new userInfo url is https://www.googleapis.com/ userinfo/v2/me – Palani

1

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

10

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

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

    } 
    }); 
+0

отлично! это сработало для меня .. –

+0

Спасибо, что работает – Jigar

3

Вы можете проверить маркер аутентификации, полученные после Google для входа в аккаунт на вашем сервер с помощью этого API

Запрос

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

Response

{ 

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

source

1

Это код простой 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); 

      }); 




     }); 
    });      
Смежные вопросы