【问题标题】:Refreshing Tokens with Google API for Google Calendar v3使用 Google API for Google Calendar v3 刷新令牌
【发布时间】:2017-03-21 00:50:55
【问题描述】:

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

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

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

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

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

    嗯,在您向 Google 授权的过程中,您会收到一个 3600 秒或 1 小时后过期的令牌,过期是正常的。所以你需要使用刷新令牌来获取一个新的工作令牌。

    以下是您需要的步骤:

    $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

    【讨论】:

    • 谢谢,我刚刚重新检查了所有内容,发现刷新令牌仅在您第一次获得访问权限时出现。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 2021-10-03
    • 2013-09-28
    • 1970-01-01
    • 2016-01-26
    相关资源
    最近更新 更多