我正在尝试在 Node.js 中获取用户配置文件详细信息。
流程是这样的,我有一个为我生成令牌的移动应用程序(通过通过 Google 和本机 SDK 进行身份验证),然后我将令牌发送到我的节点服务器,我想从 Google 获取有关用户的详细信息。我尝试了以下方法(假设我有access_token
来自客户的):
var request = require('request');
request('https://www.googleapis.com/oauth2/v2/userinfo?access_token=' + access_token, function(err, res, body) {
if (err) return callback(err);
if (res.statusCode != 200) {
return callback(new Error('Invalid access token: ' + body));
}
else {
var me;
try { me = JSON.parse(body);}
catch (e) {
return callback(new Error('Unable to parse user data: ' + e.toString()));
}
console.log('user profile:', me);
}
});
这行得通,但有时我会得到不好的响应,比如 nulldisplayName
字段、null email
(即使我有范围),而且总体上不可靠。
我曾尝试使用Google API Node 模块,但那里的流程假设我需要获取令牌并且不必要地复杂。
除此之外,我不了解 Google 的 API 版本之间的区别,也不知道什么时候使用。
编辑
似乎空displayName
字段的问题只发生在通过 iOS SDK 生成的令牌上。使用 Android SDK 生成的令牌很好,使用它们调用 API 可以解析为displayName
. 我尝试获取 iOS 令牌并调用以下 API:
https://www.googleapis.com/plus/v1/people/me?access_token=...
我得到了displayName
结果,但是在我的服务器打了几个电话后,我得到了
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "dailyLimitExceededUnreg",
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
"extendedHelp": "https://code.google.com/apis/console"
}
],
"code": 403,
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
}
}