使用Google API for Google Calendar v3刷新令牌

时间:2016-11-07 15:52:12

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

我尝试使用Google API(PHP)在系统日历和用户的Google日历之间执行每日同步。我希望系统用户能够在系统内设置一次对日历的访问权限,然后系统可以通过cron作业每天同步日历。

我已经设法让整个过程正常工作,从授权访问同步日历,但我会遇到令牌到期时间。

我认为它在v3中的工作方式是旧令牌将充当刷新令牌。因此,一旦用户提供了授权,我只需要将旧令牌传递给Google,它就可以让我运行同步。

这似乎有效,只要我在初始令牌的1小时到期时间内。一小时过去后,它就会停止工作,我需要让用户再次授权访问。

有没有办法让用户授权访问一次,然后每天同步一次日历,而无需用户再次授权访问?

谢谢!

1 个答案:

答案 0 :(得分:2)

好吧,在您获得Google授权期间,您将收到一个将在3600秒或一小时后到期的令牌,过期是正常的。因此,您需要使用刷新令牌来获取新的工作令牌。

以下是您需要的步骤:

$token = $client->getAccessToken();
$authObj = json_decode($token);
if(isset($authObj->refresh_token)) {
save_refresh_token($authObj->refresh_token);
}

保存此refresh_token很重要,然后您可以使用

更新它
$client->refreshToken($your_saved_refresh_token);

然后将新的访问令牌设置为会话:

$_SESSION['access_token'] = $client->getAccessToken();

有关详细信息,请查看此SO question