【问题标题】:Handle Google api calendar removed access处理 Google api 日历删除的访问权限
【发布时间】:2019-03-01 19:12:51
【问题描述】:

我将这个googleapis nodejs client 用于日历,一切正常,除非我从谷歌帐户安全设置中删除访问权限, 日历仍处于连接状态。有什么方法可以检查从谷歌帐户中删除的访问权限吗?这些情况如何处理?

【问题讨论】:

  • 我不明白这个问题什么帐户仍然连接?
  • 是的,帐户仍处于连接状态
  • 你怎么知道的?
  • 我可以使用我的令牌访问

标签: google-api google-calendar-api google-oauth google-api-nodejs-client


【解决方案1】:

当用户第一次运行您的应用程序时,他们会看到一份同意书。这要求他们授予您的应用程序访问其 Google 日历数据的权限。从此时起,当您的应用程序运行时,用户可能必须再次登录,但他们不必授予您的应用程序权限。如果您有一个刷新令牌,您将能够在您想要请求新的访问令牌时使用它。访问令牌的有效期为一小时。

现在,如果您请求新的访问令牌,说明其有效期为一小时。即使用户为他们的帐户转到Google Account security 并取消同意应用程序访问他们的数据也是如此。

当您当前拥有的任何访问令牌有效时,您仍然可以访问他们的数据。如果用户再次尝试使用您的应用程序,他们将必须获得许可。如果您尝试使用刷新令牌,它将不再起作用。

访问令牌工作一小时,在此期间没有重新授权,假定它们是有效的。 (这实际上可能取决于相关的范围和 API 以及 google 策略服务器的工作方式。)

access token 被设计成独立的权限系统。只要您拥有正确范围的访问令牌,大多数 API 都假定您具有访问权限。但是,如果此方法正在访问关键数据,那么他们可能会设置策略服务器。该服务器可能会对访问令牌进行额外检查,以确保即使用户拥有有效的访问令牌,他们仍然可以访问。但是,这样做可能非常耗时且资源繁重,因为要重新评估每个调用以确保用户仍然可以访问。这有点违背了首先获得有效期为一小时的访问令牌的目的。

【讨论】:

  • 尝试使用刷新令牌,如果它有效,则用户已授予您访问权限,如果无效,则他们可能删除了您。这应该是用户删除您时的实例。访问令牌将在您请求后一小时过期,不会受到用户删除您访问权限的影响。
  • 我冒昧地编辑了这个答案。它最初表示,即使用户撤销许可,访问令牌也会保留一小时。这不是真的。如果用户撤销权限,那么任何访问令牌都会立即(在一分钟左右)被撤销。
  • 我冒昧地将其还原,因为并非所有范围和 API 都是如此,我建议您对其进行测试。
  • @pinoyyid 不要编辑其他人的答案以符合您自己的想法。留下评论或写下您自己的答案。如果 DalmTo 再次发生,请举起另一个标志。
  • 原始帖子实际上是不正确的,正如我在评论中所解释的那样。这不是“想法”,而是事实。我确实对其进行了测试,并且行为完全符合我的预期。重新创建的步骤:获取访问令牌。获取驱动器。观察正确的反应。撤销许可。等待 1 分钟以进行 CRL 传播。获取驱动器。观察 401 错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-01
  • 2019-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多