Google_Client刷新令牌在几天后过期

时间:2016-03-03 10:11:03

标签: php google-api google-api-php-client google-api-client

我的刷新令牌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天内一切正常,直到上述问题再次发生。

有没有人知道为什么会这样,我该如何防止这种情况?

谢谢。

0 个答案:

没有答案