无法为令牌交换身份验证密钥:invalid_grant错误

时间:2019-01-09 13:25:04

标签: oauth-2.0 google-oauth google-oauth2

我在用访问/刷新令牌交换Google的身份验证密钥(用于脱机访问)时遇到了麻烦。

当我调用API获取令牌时,我总是会收到“ invalid_grant”错误。

request error

我可以提供OAuth页面的源代码(从那里获取代码):

https://pastebin.com/uAS86bj9

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”错误

0 个答案:

没有答案