Как получить профиль пользователя с помощью 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 не определены.