我的刷新令牌google返回时遇到问题。我想他们会在几天后过期。文档说除非用户手动执行此操作,否则它们不会。
以下是我的工作:
我提示用户使用Google_Client
授权我的应用$client = new Google_Client();
$client->setClientId(GOOGLE_CLIENT_ID);
$client->setClientSecret(GOOGLE_CLIENT_SECRET);
$client->setRedirectUri(GOOGLE_REDIRECT_URI);
$client->setScopes(array(GOOGLE_SCOPE_A,'https://www.googleapis.com/auth/userinfo.email'));
$client->setApplicationName(GOOGLE_APPLICATION_NAME);
$client->setAccessType('offline');
$client->setApprovalPrompt('force');
我使用
将刷新令牌存储在数据库中$refreshToken = $client->getRefreshToken();
我有一个每天运行的cURL并从分析中提取一些数据,然后使用以下代码进行连接:
$client = new Google_Client();
$client->setClientId(GOOGLE_CLIENT_ID);
$client->setClientSecret(GOOGLE_CLIENT_SECRET);
$client->refreshToken($refreshToken);
$client->isAccessTokenExpired() //this returns false;
前15-30天一切正常。之后,看起来刷新令牌不再起作用了。
$client->isAccessTokenExpired() //this returns true;
当我尝试从analaytics中提取数据时,我收到了一个Google_Service_Exception,代码为:401,消息为:"需要登录"
我所做的是提示用户再次授权我的应用,使用数据库中的新应用更新刷新令牌,并且在接下来的15-30天内一切正常,直到上述问题再次发生。
有没有人知道为什么会这样,我该如何防止这种情况?
谢谢。