bellow是我的节点js脚本,用于使用accessToken获取谷歌用户详细信息
var accessToken = req.body.accessToken;
console.log(accessToken)
var google = require('googleapis');
//google api
var plus = google.plus('v1');
var OAuth2 = google.auth.OAuth2;
var oauth2Client = new OAuth2(
config.google.clientID,
config.google.clientSecret,
config.google.redirect_uri
);
oauth2Client.setCredentials({access_token: accessToken});
plus.people.get({
userId: 'me',
auth: oauth2Client
}, function (err, response) {
// handle err and response
if (err) {
reject(err)
} else {
console.log(response);
resolve(response)
}
});
需要使用accessToken获取Google登录用户详细信息。代码有什么问题?
答案 0 :(得分:1)
最可能的原因是相关用户尚未创建Google +个人资料。以下是一些选项。
我不确定您要获取哪些信息,但获取用户信息的最佳方式是使用配置文件范围对用户进行验证,然后直接向用户信息端点请求数据
请求
GET /userinfo/v2/me HTTP/1.1
Host: www.googleapis.com
Content-length: 0
Authorization: Bearer uzG4XqnvucBFk3jylgxnbtNhoOt2wCc3QvUcjk7PZhJ5m6G7ibtlBwbAQntJjJtLsxZfoDjhbASpzLmcFnlZ9o4qoMd2fCV2eRb4O5XrKRAXC
回复
{
"family_name": "Lawton",
"name": "Linda Lawton",
"picture": "https://lh5.googleusercontent.com/-a1CWlFnA5xE/AAAAAAAAAAI/AAAAAAAAl1I/UcwPajZOuN4/photo.jpg",
"locale": "en",
"gender": "female",
"link": "https://plus.google.com/+LindaLawton",
"given_name": "Linda",
"id": "117200475532672775346"
}
你也可以使用相同的个人资料范围浏览google people api
GET /v1/people/me HTTP/1.1
Host: people.googleapis.com
Content-length: 0
Authorization: Bearer NuzG4XqnvucBFk3jylgxnbtNhoOt2wCc3QvUcjk7PZhJ5m6G7ibtlBwbAQntJjJtLsxZfoDjhbASpzLmcFnlZ9o4qoMd2fCV2eRb4O5XrKRAXC
但此终结点从Google+上读取,因此如果用户未在Google+个人资料中填写任何内容,则您不会在此处看到太多数据。
答案 1 :(得分:1)
您可以使用请求模块获取节点服务器上的用户详细信息。
但在请求用户数据之前,请确保您已通过为其提供所需范围来授权API。在您的情况下,您需要在范围内提供https://www.googleapis.com/auth/userinfo.profile
。
当您收到accessToken时,请使用该令牌来调用此google api
https://www.googleapis.com/oauth2/v1/userinfo
const request = require('request');
// use any api you want to call.
request({
url: 'https://www.googleapis.com/oauth2/v1/userinfo',
method: 'GET',
headers: {
'Authorization': `Bearer ${YourAccessToken}`,
'Accept': 'application/json'
}
}, function(err, response, _user) {
console.log('User Data', _user);
})
我希望这能解决你的问题。如果仍有问题,您可以在OAuth 2.0 Playground
上测试您的Google API