PHP Google API刷新令牌

时间:2017-05-11 01:38:51

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

使用Google API的refreshToken过程出现问题时,如果遇到过期的令牌,则refreshToken不会获得AccessToken。此时我已经将刷新令牌保存到数据库。

$client = new Google_Client();
$client->setApplicationName("APP NAME");
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->setAccessType('offline'); 
$client->setScopes(array('https://www.googleapis.com/auth/calendar'));
$client->setAccessToken( json_encode($access_token_from_db) );

if ( $client->isAccessTokenExpired() ) :
    $client->refreshToken($refresh_token_from_db);
    $new_access_token = $client->getAccessToken();
    print_r($access_token);
    //save to db -- but this fails
endif;

运行此操作后,新的访问令牌仍为空。即使我在检查到期之前将setAccessToken设置为现在已过期的令牌,同样的问题仍然存在。

在已保存refreshToken之后,状态似乎没有直接的示例。

在我的应用程序中,我们会根据操作(如果需要了解应用程序目的)将更新发送到用户的日历。

这个答案对我来说似乎不正确: How to refresh token with Google API client?

是因为它没有使用$ client-> isAccessTokenExpired()方法,加上不是一个干净的解决方案,脚本应该非常小而且小,以完成任务。从理论上讲:

  • setAccessToken为授权时提供的
  • 如果已过期(通过功能),请使用刷新访问新令牌
  • 保存令牌并继续

虽然上面的例子有类似的功能,但它是2013年的答案,可能会有效,但不是最好的方法,我相信。

0 个答案:

没有答案