php - 使用 Google API for Google Calendar v3 刷新 token

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

我正在尝试使用 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/

相关文章:

php - Json eval 无法解析数据

php - 使用php远程连接MYSQL数据库

javascript - 我是否必须在每次请求时验证 google tokenID?

python - 如何正确观看 Gmail 推送通知

google-api - Google Finance api 出现 403 错误

android - 在没有默认提醒的情况下从我的应用程序创建日历事件

javascript - 使用特定颜色创建指向 Google 日历的 HTML 链接

PHP MySQL 将值设为空

php - php mysql 中的表连接

c# - 检索 Google Api 的访问和刷新 token