我们目前用于google-api-python-client处理面向用户的 OAuth 流程。我们有一些用户给我们发电子邮件询问为什么他们的帐户没有成功导入,当我们查看时,他们的令牌没有适当的范围。例如,我们希望找到所有这些范围:
https://www.googleapis.com/auth/gmail.metadata
openid
https://www.googleapis.com/auth/userinfo.email
但我们只收到最后 2 个。当我们查看 OAuth 流程时,我们注意到我们的 OAuth 流程如下所示(应用程序名称和帐户名称经过编辑)。请注意,请求的范围有一个复选框,并且默认情况下该复选框处于未选中状态。(从 2020 年中期到大约一周前,此流程有 2 个额外的确认步骤,但默认情况下选中了最后一个复选框。)
将其与流行应用程序 Fantastical 的 OAuth 流程进行比较(许多其他应用程序,包括 Spark,看起来很相似):
在找到链接到Google 博客上这篇文章的StackOverflow 答案后,似乎有些应用程序已继承到第二个流程,但第一个流程是新的默认流程。两个问题:
默认情况下未选中的复选框似乎是一个相对较新的更改,我找不到任何有关它的文档。这是新的默认行为,还是 OAuth 流程中是否有一个参数/某些内容我们可以更改以默认检查它?当未选中时,用户认为他们不需要检查它,因此他们按“继续”,然后我们的应用程序必须抛出错误并向用户解释他们需要检查该范围复选框。现在复选框未选中似乎有点疯狂,因为它是我明确要求的范围……这就是此流程的全部要点。
有没有什么方法可以使我们的流程与 Fantastical、Spark 以及 2018 年左右之前创建的任何其他 OAuth 应用程序仍然具有的旧的、更简单的流程保持一致?或者那些其他旧应用程序是否有过渡到新流程的预计到达时间?上述 Google 博文表示,新流程将“在 2019 年初扩展到现有客户”,因此我们大约晚了 2.5 年才做出这一改变。就目前情况而言,它使“新”OAuth 应用程序(我们的应用程序是在 2019 年创建的,所以算不上新......)处于令人难以置信的劣势,因为它的步骤更多,需要明确同意,更容易出现用户错误,并且使它看起来像我们的应用程序在任何方面都受到较少的审查或“安全”,因为其流程与用户接受的许多其他应用程序的培训流程截然不同。
这个问题已经存在了几个月了,所以也发布这篇文章来帮助处于相同位置的其他人。一些额外的要点,以防对任何人有帮助:
如果我从 Fantastical 流程中获取 client_id 和 redirect_url 并在我们应用程序的链接中使用它,则该流程看起来与他们的相同。所以它似乎是由客户端 ID 驱动的,而不是 URL 或我们流程中发生的某些事情。
我们的应用已通过 Google 的第三方安全评估并通过,因此它可能与我们请求的范围或我们的应用在审批流程中的状态无关
我们的流程和 Fantastical 都发生在 Web 视图中,因此它不太可能与本地与 Web 视图相关 …
google-api google-oauth google-api-python-client google-cloud-platform gmail-api
您好Stackoverflow社区,
我正在尝试配置网络应用程序以利用某些Google 范围。我希望用户要么批准所有这些,要么拒绝所有这些。
这正是我在使用Google OAuth Playground时得到的行为:
看,我在每个范围内都有一个无法取消选中的“实心圆”。用户要么允许访问所有列出的范围,要么拒绝访问所有范围。一次全部。
但在我的应用程序中,每个权限都映射到一个可以ALLOWED或DENIED的弹出窗口。另外,最后会显示相同的同意屏幕,但用户可以选择/取消选择某些权限。(复选框)
尽管这听起来可能更细致,但我认为这也有点令人困惑,而且它扩展了我的应用程序中的逻辑,因为我需要仔细检查是否已授予所有范围的权限。我确实需要它们来完成我需要做的事情,所以,只有一个范围对我来说没有用,我可能需要重新触发授予权限过程:这实际上是我试图避免的。我的意思是,处理完全被拒绝的情况是可以的,但部分范围获得批准并不是我想要的。
解决方案是模仿Google OAuth Playground的做法。
我已在我的同意屏幕配置中明确添加了范围(现在正在审核中)。但我仍然明白这种行为。
为了获得确切的行为,我可能会缺少 oAuth url 的哪些配置或参数?
谢谢!