【问题标题】:Problems getting refresh_token from Google calendar API in offline mode using PHP library使用 PHP 库在离线模式下从 Google 日历 API 获取 refresh_token 的问题
【发布时间】:2018-07-31 19:36:00
【问题描述】:

我第一次将帐户与 Google 日历同步时,我从 API 响应中得到如下响应:

{"access_token":"xxx","token_type":"Bearer","expires_in":3600,"refresh_token":"xxx","id_token":"xxx","created":1519204303}

我将此信息保存在 ddbb 中,然后我可以毫无问题地将我平台中的用户事件与用户的 Google 日历同步。

在我的平台中,每个事件都可以与用户的日历同步,问题是如果用户想要将另一个日历与另一个事件同步,当我将用户发送到 Google 授权时,在这种情况下我没有收到来自 Google Calendar api 响应的 refresh_token:

{"access_token":"xxx","token_type":"Bearer","expires_in":3599,"id_token":"xxx","created":1519204379}

所以,我无法在离线模式下使用它。

总结:

用户第一次授权使用账号,反应良好。如果用户想要同步另一个事件,我再次发送给 Google auth,因为他可以决定使用另一个帐户将日历与事件同步,但如果他决定选择以前选择的 google 帐户,在这种情况下,我无法接收 refresh_token。如果我可以保存帐户 ID 或其他内容,我可以使用旧的 refresh_token 信息,但在 API 响应中我没有收到帐户标识符。

感谢您的帮助!

【问题讨论】:

  • 您能出示您的代码吗?

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


【解决方案1】:

当用户第一次验证您的应用程序时。您将获得一个访问令牌和一个刷新令牌。刷新令牌使您可以访问用户的 Google 日历帐户。用户有权访问的所有日历,而不仅仅是其中一个。

Google 希望您为用户保存刷新令牌。他们不会向您返回另一个刷新令牌。即使您再次请求用户身份验证,您也应该使用您保存的那个。如果您想强制提供新的刷新令牌,您可以执行 approval_prompt=forcerevoke 这将提示用户再次验证您的应用程序并为您提供新的刷新令牌。

【讨论】:

  • 问题是我没有收到用于识别所选帐户的标识符。
  • 签名无效
猜你喜欢
  • 2020-01-28
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 2015-05-26
  • 2017-04-30
  • 2013-05-07
相关资源
最近更新 更多