先介绍一下背景知识;我有一个基于php的应用程序,它处理谷歌OAuth流,并将结果访问令牌存储在数据库中。我能够在另一个PHP脚本中完美地使用这个访问令牌,所以我不认为令牌已经过期。
当我尝试在node.js脚本中使用访问令牌时,问题出现了。我总是从Google API得到这个错误。
{[错误:无效凭据]代码:定义,错误:[{domain: 'global',理由:"authError",消息:'无效凭据',locationType:"头",location: 'Authorization'}]}
我使用的node.js代码,供参考,如下所示;
var CLIENT_ID = 'CLIENT_ID';
var CLIENT_SECRET = 'CLIENT_SECRET';
var REDIRECT_URL = 'REDIRECT_URL';
var oauth2Client = new OAuth2Client(CLIENT_ID, CLIENT_SECRET, REDIRECT_URL);
oauth2Client.setCredentials({
access_token: 'ACCESS_TOKEN'
});
var analytics = google.analytics('v3');
analytics.management.accounts.list({
auth : oauth2Client
}, function(err, resp) {
console.log(err);
console.log(resp);
});
我尝试在测试脚本中硬编码access_token值,但仍然是相同的结果。
欢迎提出任何建议!
在深入研究了PHP和Node.js API库的代码后,我找到了答案。
PHP API客户端自动检查令牌是否无效,然后更新它而不告诉你(从我可以看到的)。我存储的令牌无效,因此我只需要在Node.js脚本中手动刷新它。