Google Oauth2:刷新OAuth2令牌时出错,消息:'{“ error”:“ invalid_grant”}'

院长

我在本地主机上运行以下代码,以尝试通过Google Oauth2进行身份验证。验证后,它似乎可以工作一段时间。然后一段时间后,我得到了这个经典错误:

Error refreshing the OAuth2 token, message: '{
"error" : "invalid_grant"
}'

我看过以前几次将此问题发布到StackOverflow,但是建议的解决方案似乎对我不起作用。

我相信访问令牌已正确更新(请参见下面的代码)。我也相信服务器时钟已正确同步。我究竟做错了什么?


    //$token retrieved from database
    $token = {"access_token":"xxx.xxx_xxxx-xxx","token_type":"Bearer","expires_in":3600,"refresh_token":"1\/xXxXxxxxxXXXxx","created":145490000}

    $google = new Google_Client();
    $google->setAccessType('offline');
    $google->setClientId($client_id);
    $google->setClientSecret($client_secret);
    $google->setRedirectUri($client_redirect_uri);
    $google->setAccessToken($token);
    if($google->isAccessTokenExpired()) {
      $google->refreshToken($token);
    }
    $token = $google->getAccessToken();
    $google->setAccessToken($token);

    //Some Database code to save the new $token
    ...

    $result = new \Google_Service_YouTube($google);
戴姆敦

Invalid_Grant有两个可能的原因

  1. 服务器时钟未与NTP同步。(解决时间)
  2. 刷新令牌已过期。(再次请求解决方案身份验证)

您说过您的代码会工作一段时间,然后停止工作。这使我认为您的问题是nr 2。

刷新令牌将停止工作的原因:

  1. 该用户已撤消您的身份验证。
  2. 如果6个月未使用刷新令牌,它将自动过期。
  3. 刷新令牌基于项目(客户端ID)和用户。如果用户对您的应用程序进行身份验证,您将获得刷新令牌。如果他们再次这样做,您将获得另一个刷新令牌。第一个仍然可以使用,而第二个仍然可以使用。用户第二十七次验证您的代码后,您最多可以有26个实时刷新令牌,您将丢失第一个刷新令牌。

要解决您的问题,您需要尝试找出上述3个问题中的哪一个导致您的刷新令牌过期。我真的无法为您提供很多帮助,因为它需要您进行一些侦探工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

google服务帐户示例返回“刷新OAuth2令牌时发生错误{“ error”:“ invalid_grant”}“

'刷新OAuth2令牌时出错,消息:实时网站上的消息:'{“ error”:“ invalid_grant”}'',但在本地环境下有效

Google oAuth2访问令牌:“ invalid_grant”

Google Oauth刷新令牌-invalid_grant

PHP:Google plus Oauth 2.0-获取OAuth2访问令牌时出错,消息:“ invalid_client”

Google API OAuth2,服务帐户,“错误”:“ invalid_grant”

invalid_grant试图从Google获取oAuth令牌

OAUth2 ASP.NET invalid_grant

刷新OAuth2令牌@ Google_CalendarServices(php)时出错

Google Api服务帐户“错误”:“ invalid_grant”,“ error_description”:“无效的JWT签名”。

Google Directory API PHP客户端SDK出现{“ error”:“ invalid_grant”}错误

尝试为Box API使用oAuth2时出现invalid_grant错误

刷新OAuth2令牌时出错,消息:'{“ error”:“ unauthorized_client”,“ error_description”:“未授权的客户端或请求中的作用域”。}'

Google_Auth_Exception:invalid_grant

带有刷新令牌的春季Google OAuth2

Google oauth2刷新令牌何时失效?

如何获取Google oauth2刷新令牌?

无法从Google API OAuth2刷新令牌

Google OAuth2:缺少必需的参数:grant_type

刷新访问令牌时出现“ invalid_grant”错误的情况?

Google OAuth2:错误401-invalid_client

Google Calendar API返回invalid_grant和错误的请求

Google云端存储HttpAccessTokenRefreshError:invalid_grant:错误的请求

'invalid_grant:无效的JWT:Google翻译API

在刷新/使用React应用中的Google OAuth2刷新令牌后保持用户登录

Invalid_grant 请求访问令牌 MS Graph 时

尝试获取访问令牌googleapi的Invalid_grant错误

Spring Boot-Google OAuth2,将刷新令牌存储在数据库中

Google OAuth2即使使用access_type ='offline'也不会发出刷新令牌吗?