我在localhost上运行以下代码,尝试使用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);
答案 0 :(得分:4)
Invalid_Grant
有两个原因你说你的代码工作了一段时间然后停止工作。这让我觉得你的问题是2号。
刷新令牌停止工作的原因:
要解决您的问题,您需要尝试找出上述3个问题中的哪一个导致刷新令牌过期。我无法帮助你,因为你需要一些侦探工作。