我正在使用Google Calendar API对用户日历进行离线访问。
因此,当用户首次验证应用时,我会获得刷新令牌。
在后续访问中,没有给出刷新令牌。
因此,为了保留这些,我将刷新令牌存储在我自己的数据库用户表中。所以我知道当网站的特定用户登录时,Google刷新令牌是$ refresh
如果用户仅使用1个Google帐户,但是如果他们在多个Google帐户中对应用进行身份验证,则此功能正常。有多个刷新令牌,但在我的数据库端,我只存储一个。
所以要做的第一件事就是存储所有刷新令牌,将它们全部绑定到单个网站用户。
但即使这仍然是不正确的,在授予对特定日历的访问权限时,我不知道该特定日历与哪个Google帐户相关联。 (除非我遗漏了什么)
因此,当他们授予对日历的访问权限时,我必须使用的是用户登录我网站的内容。
因此,如果某人授权访问2个日历,这些日历位于2个不同的Google帐户中,但两者都与该网站用户相关联。如何知道哪个Google帐户用于哪个日历?
在不知道该信息的情况下,刷新令牌将失败,直到我选择正确的刷新令牌。必须通过刷新令牌循环直到一个工作。
是否有某种方法可以存储哪些内容可以帮助我了解哪些刷新令牌与每个日历相关联(而不仅仅是将其绑定到网站用户)?
或者我的方法在我存储数据的方式上是错误的,并且有更好的方法来存储更有意义的信息。
答案 0 :(得分:0)
在第一次授权代码交换期间,在离线方案中获取刷新令牌。即使用户有多个帐户,也会为每个Google帐户生成刷新令牌(即使用户也相同)。 此外,当您将刷新令牌与用户ID(谷歌帐户ID)和日历ID一起存储在数据库存储刷新令牌中时(即使两个ID相同但在少数情况下,每个用户可以有多个日历) )。