我在本地主机上运行以下代码,以尝试通过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有两个可能的原因
您说过您的代码会工作一段时间,然后停止工作。这使我认为您的问题是nr 2。
刷新令牌将停止工作的原因:
要解决您的问题,您需要尝试找出上述3个问题中的哪一个导致您的刷新令牌过期。我真的无法为您提供很多帮助,因为它需要您进行一些侦探工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句