我的应用程序前端使用React构建,我正在使用一个包(react-google-login)来处理流程。我可以成功地使用我添加为测试用户的Google帐户进行登录,并检索所需的基本个人资料信息。
问题是我也可以使用其他未添加到测试用户列表中的Google帐户进行登录。我想象Google不应该为不在测试用户列表中的帐户发出访问令牌。
我觉得我对OAuth流程有所误解,或者我配置了某些东西不正确。如果有任何指针,我会很感激。
谢谢。
确实存在缺陷。
我和你当时遇到了相同的问题,认为自己可能误解了什么。在反复检查代码无果后,我在 Stack Overflow 上发布了一个帖子,被建议向 Google 的漏洞跟踪系统发帖报告。在与 Google 进行一些故障排除后,他们确认了这个 bug,并正在努力修复它(已有一段时间了)。
我在与 Google 谈话时使用了这个线程作为例子。我本来想在与他们联系后在这里发布更新,但是我忘了,抱歉!
更多详细信息的 buganizer 线程: https://issuetracker.google.com/issues/211370835
我不是谷歌的员工,因为文档很混乱,所以这个答案并不是最终确定的,但是相当肯定:
这个问题出在接口和文档上,而不是行为上。他们不太可能改变行为。当我尝试“发布”我的应用程序时,它要求我告诉他们为什么我“需要访问敏感和/或受限制的用户数据”。我的应用程序(以及你的应用程序,似乎也是如此)没有请求任何谷歌定义为敏感或受限制的内容,这意味着我们无法发布。在你的情况下,你不想发布,因为你的网站仍在开发中。在我的情况下,我的网站已经上线,并且正在使用Google登录,但是我不能“发布”(按照他们的定义),因为我不要求敏感信息,因此无法描述我将要做什么。如果谷歌改变了他们的行为,像我这样的网站将停止工作。
令人困惑的是,“发布”状态(可能)并不是旨在保护您的应用程序的一种方式,而是旨在保护他们的用户信息的一种方式。换句话说,当他们防止非测试帐户登录时,他们防止您访问用户信息,而不是防止用户访问您的网站。发布时,您必须验证您是否有权访问此信息。如果您没有请求敏感信息,则他们不必保护其用户免于登录。
如果他们希望我发布,只要他们让这成为可能,我就会乐意这样做。(事实上,整个过程让我感到紧张,我已经考虑过请求访问某些微不足道的“敏感”内容,以便我可以完成验证过程并“发布”,但我担心这将阻止一些用户登录,而且我不喜欢拥有不必要的用户信息。)
换句话说,您应该从您的角度锁定您的应用程序。Google应该停止称呼这种状态为“已发布”和“测试”,并更加一致地记录事物。他们应该给那些因此(意外地)允许人们登录的应用程序发送电子邮件,并为他们提供轻松关闭该访问权限的选项。
我有点像那个说你不应该依赖这些设置来防止人们访问你的应用程序的人。在某种程度上,“那个人”有一定的道理,但是,人们希望设置能够做到它字面上所说的事情,即使它在其他地方也说过它不会这样做。
这个答案基本上就是我在这个问题上写的,别人开了一个关于这个主题的问题:https://issuetracker.google.com/issues/211370835#comment33。希望 Google 能够确认或否认我的解释,并可能改进他们处理这些问题的方式。
email https://www.googleapis.com/auth/calendar
或者您可以使用这个等价值:
https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/calendar
并不是建议您仅仅为了添加一个像电子邮件这样的作用域而去添加它,只是它可以阐明问题所在,如果您确实需要这样的作用域,添加它将解决您的问题。