我正在尝试使用 Google API (PHP) 在系统日历和用户的 Google 日历之间执行每日同步。我希望系统用户能够从系统内部设置对其日历的访问一次,然后系统可以通过 cron 作业每天同步日历。
我已经设法使整个过程正常运行,从授权访问到同步日历,但我遇到了 token 过期时间的问题。
我认为它在 v3 中的工作方式是旧 token 将充当刷新 token 。因此,一旦用户提供了授权,我只需将旧 token 传递给 Google,它就允许我运行同步。
只要我在初始 token 的 1 小时到期时间内,这似乎就有效。一小时过去后,它就会停止工作,我需要让用户再次授权访问。
有没有办法让用户授权访问一次,然后每天同步日历一次,而无需用户再次授权访问?
谢谢!
最佳答案
嗯,在您向 Google 授权期间,您将收到一个 token ,该 token 将在 3600 秒或一小时后过期,过期是正常现象。因此您需要使用刷新 token 来获取新的工作 token 。
以下是您需要的步骤:
$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);
然后将新的访问 token 设置为 session :
$_SESSION['access_token'] = $client->getAccessToken();
有关更多信息,请查看此 SO question .
关于php - 使用 Google API for Google Calendar v3 刷新 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40469225/