我试图使用Google (PHP)在系统日历和用户的Google日历之间执行每日同步。我希望系统用户能够设置从系统中访问他们的日历一次,然后系统可以通过cron作业每天同步日历。
我设法使整个过程正常工作,从授权访问到同步日历,但我被标记的过期时间卡住了。
我认为它在v3中工作的方式是旧令牌充当刷新令牌。因此,一旦用户提供了授权,我只需将旧令牌传递给Google,就可以运行同步。
这似乎是可行的,只要我在初始令牌的1小时到期时间内。一旦一个小时过去,它停止工作,我需要让用户再次授权访问。
有没有办法让用户授权访问一次,然后每天同步一次日历,而不需要用户再次授权访问?
谢谢!
发布于 2016-11-08 07:42:46
那么,在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。
https://stackoverflow.com/questions/40469225
复制相似问题