2016-11-07 204 views
1

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

我设法让整个过程工作,从授权访问到同步日历,但我陷入了令牌到期时间。

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

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

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

谢谢!

回答

1

那么,在您授权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

+0

谢谢,我只是重新检查一切,发现刷新令牌只出现在第一次获得访问权限。谢谢! –