Google OAuth2.0 允许不在测试用户列表中的用户

Google OAuth2.0 allows users NOT in list of test users

我正在开发一个网络应用程序,允许用户使用 OAuth2.0 使用他们的 Google 帐户登录。 我已经创建了一个 OAuth2.0 客户端 ID,配置了 OAuth 同意屏幕并将发布状态设置为 'Testing',并添加了一个测试用户。

我的应用程序的前端是用 React 构建的,我正在使用一个包 (react-google-login) 来处理流程。我可以使用我添加为测试用户的 Google 帐户成功登录,并检索所需的基本个人资料信息。

问题是我还可以使用其他 Google 帐户登录,这些帐户尚未添加到测试用户列表中。我想 Google 不应该为不在测试用户列表中的帐户颁发访问令牌。

我觉得我对 OAuth 流程有一些误解,或者我配置不正确。如果有人有任何指示,我将不胜感激?

谢谢。

有没有可能你只要求 email 范围?

看来测试用户筛选器以及处于测试模式的 'app' 的整个概念可能仅存在于同意屏幕功能中。

出于某种原因,如果您只要求发送电子邮件,Google 不会显示同意屏幕。

所以...也许这意味着您不需要同意屏幕,因此无需关心该功能对您的应用的看法(您的应用处于测试模式并且需要先验证投入生产)。

或者这可能是一个错误?或者也许只是因为您可以这样做并不意味着 Google 的条款允许这样做。也许他们只是没有实施阻止该用例。

无论如何,如果您添加更重要的范围(如日历)API,那么以下内容将会发生变化:

  • Non-test 用户会收到类似“开发者尚未授予您访问此应用程序的权限”之类的消息。并且无法完成 oauth
  • 测试用户会收到类似“Google 尚未验证此应用程序”的消息
  • 测试用户将看到同意屏幕

基本上,一切都按预期开始工作。

顺便说一句,只为范围添加“电子邮件”或“个人资料”似乎是一种旧的做事方式,所有较新的范围都希望您使用完整的 URL 作为范围(尽管 google 他们自己在配置范围时没有使用完整的 URL。

例如,如果您想要电子邮件和日历范围,您可以为 scope 字段输入此值:

email https://www.googleapis.com/auth/calendar

或者您可以使用这个等效值:

https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/calendar

并不是建议您为此添加电子邮件之类的范围,只是因为它可以阐明正在发生的事情,如果无论如何都有您需要的范围,添加它就可以解决您的问题。

确实有bug

我和你在同一个地方,假设我误解了什么。在一次又一次地检查我的代码但没有成功之后,我做了一个 Stack Overflow post,其中建议我 post 到 Google 的错误跟踪系统。在使用 Google 进行了一些故障排除后,他们确认了该错误,并且他们现在正在努力修复它(已经有一段时间了)。

我在与 Google 交谈时将此线程作为示例。我本想在与他们取得联系后post在这里更新,但我忘记了,抱歉!

包含更多详细信息的 buganizer 线程: https://issuetracker.google.com/issues/211370835