我在用访问/刷新令牌交换Google的身份验证密钥(用于脱机访问)时遇到了麻烦。
当我调用API获取令牌时,我总是会收到“ invalid_grant”错误。
我可以提供OAuth页面的源代码(从那里获取代码):
gapi.client.init({
apiKey: apiKey,
clientId: clientId,
scope: scopes
})
.....
var user = data.getAuthInstance().currentUser.get();
user.grantOfflineAccess({
}).then(function (resp) {
$('#content').append('<br>code: ' + resp.code); // <-- this is the code
});
(还有更多的实验和很多奇怪的事情): https://pastebin.com/JDhf88qd
我已经尝试过: -使用redirect_uri -与NTP同步时间 -仔细检查clientid和clientsecret
更好的解释:
我有自己的应用程序,具有经典的“使用google登录”(效果很好)。现在,我需要授权密钥来模拟服务器应用程序中的用户(以下载Fitness数据)。 因此,我尝试了两种方法,但结果均相同:
user.grantOfflineAccess
诺言实际上会返回授权码给我。
我尝试的第二件事是打电话给
var link = 'https://accounts.google.com/o/oauth2/v2/auth?redirect_uri={url}&response_type=code&client_id='+ clientId +'&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Ffitness.body.read&access_type=offline';
window.open(link);
,然后从重定向中获取我收到的代码。
我现在需要(在我的服务器应用程序中)从Google服务器获取access_token和refresh_token。我只是用邮递员来模拟这一点,我将使用其他工具进行请求。
所以我现在尝试致电
POST https://accounts.google.com/o/oauth2/token
或
POST https://www.googleapis.com/oauth2/v4/token
具有以下数据:
code={thecode}&client_id={ClientId}.apps.googleusercontent.com&client_secret={ClientSecret}&redirect_uri={url}&grant_type=authorization_code
但是我收到“ invalid_grant”错误