相关疑难解决方法(0)

令牌必须是一个短期令牌并且在合理的时间范围内

我有相同的错误.就我而言,当应用尝试通过Google Cloud Client API上传文件时,就会发生这种情况.

POST https://www.googleapis.com/oauth2/v4/token
400 Bad Request
Invalid JWT: Token must be a short-lived token and in a reasonable timeframe
Run Code Online (Sandbox Code Playgroud)

我如何加载令牌是读取服务帐户json文件,并将其附加到CURLOPT_HTTPHEADERPHP中.它确实在过去一个月内正常运行,因此我猜测Google改变了授权方式.

谁有人面对并解决了这个问题?

php google-api google-api-php-client

48
推荐指数
4
解决办法
3万
查看次数

Google OAuth2 - 访问令牌和刷新令牌 - > invalid_grant/Code已被兑换

我的目标是拥有某种长期访问令牌,以便我的Android应用程序可以在当天阅读用户Google日历的事件,而无需每次都获得用户批准.

我能够生成 - 我认为是 - 一次性授权代码; 但是,当我将此发送到我的服务器端,应用程序引擎时,我收到以下错误响应:

400 OK { "error" : "invalid_grant", "error_description" : "Code was already redeemed." }

这是被抛出的异常.我只是抓住它并将其作为一种调试方式发回给自己.

我得到的一次性代码以4/VUr开头,所以我假设它是一次性代码而不是常规访问令牌.

目前,在Android上,我允许用户使用Google+登录,以便我拥有自己的电子邮件地址.从那里我使用以下代码请求一次性授权代码:

try {
    Bundle appActivities = new Bundle();
    appActivities.putString(GoogleAuthUtil.KEY_REQUEST_VISIBLE_ACTIVITIES, "http://schemas.google.com/AddActivity");
    String scopes = "oauth2:server:client_id:" + Constants.SERVER_CLIENT_ID + ":api_scope:https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/calendar";
    //Plus.SCOPE_PLUS_LOGIN + " " + CalendarScopes.CALENDAR_READONLY;
    String acctName = "myGmail";
    String token = GoogleAuthUtil.getToken(getApplicationContext(), acctName, scopes, appActivities);

} catch (UserRecoverableAuthException e) {
        startActivityForResult(e.getIntent(), 257/*REQUEST_AUTHORIZATION/*/);
} catch (Exception e) {
        e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

这段代码来自这里,似乎这就是我必须做的.

然后我将此代码发送到我的App …

google-app-engine android google-calendar-api google-plus google-oauth

6
推荐指数
1
解决办法
9189
查看次数