我第一次将帐户与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身份验证,因为他可以决定使用其他帐户将日历与活动同步,但如果他决定选择之前选择的Google帐户,则在这种情况下,我会#39 ; m无法接收refresh_token。如果我可以保存帐户ID或其他内容,我可以使用旧的refresh_token信息,但在API响应中我没有收到帐户标识符。
感谢您的帮助!
答案 0 :(得分:0)
当用户第一次对您的应用程序进行身份验证时。您将获得访问令牌和刷新令牌。通过刷新令牌,您可以访问用户的Google日历帐户。用户可以访问的所有日历,而不仅仅是其中一个日历。
Google希望您为用户保存刷新令牌。他们不会再向您返回另一个刷新令牌。即使您再次请求对用户进行身份验证,也应使用已保存的那个。如果您想强制提供新的刷新令牌,您可以执行approval_prompt=force或revoke这将提示用户再次验证您的应用程序并为您提供新的刷新令牌。