Google的UserInfo API是否提供任何保证?



我们几个月前为我们的网站实现了Google OAuth。到目前为止,有两个用户(约100个(的用户信息档案不完整。我们打电话给https://www.googleapis.com/oauth2/v1/userinfo?',带有有效的令牌,并且响应json仅包含[locale,verified_email,email,id]。

文档(https://developers.google.com/accounts/docs/OAuth2Login#userinfocall)不是明确的,但我解释它们的方式,

回复应始终包括:[id,email,verified_email,name,given_name,family_name,时区,性别]有时包括:[图片,区域设置]

有人知道UserInfo API提供了什么样的保证吗?我应该以无效为由拒绝不完整的配置文件吗?为什么个人资料不完整,还有其他解释吗?

2014年6月3日更新
我能够复制这个问题。我们将用户发送到谷歌请求,两个范围:

https://www.googleapis.com/auth/userinfo.profile

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

据我所知,谷歌不允许用户随意选择他们允许的范围。要么全有要么全无。但是,我能够从URL中删除userinfo.profile作用域并重新加载页面。这导致我被发送回一个有效的令牌,但不是正确的范围。我需要访问tokeninfo端点,并确保已授权正确的作用域。

您也在使用OpenID吗?我强烈怀疑这些用户实际上并没有UserInfo的有效OAuth令牌,而是获得了与较弱的OAuth权限相对应的数据。理想情况下,询问这些用户你的网站的哪些数据出现在他们的谷歌账户安全页面中,并将其与功能用户(如你自己(的数据进行比较。

试着撤销你的令牌,然后点击端点,看看你会得到什么结果。

注意:这就是我的想法

我也已经与OAuth合作了一段时间,例如在Facebook个人资料中多次遇到这个问题。老实说,我不明白为什么请求应该返回不完整的数据(假设作用域是正确的(,除了提供者的实际配置文件是不完整的(尽管有这个[locale, verified_email, email, id]而没有[firstName, lastName]对你来说没有意义(。例如,有些配置文件没有配置文件图片e.t.c.

总而言之,我想说:这不是保证的(这不仅仅是谷歌特有的(。我以前编写过一个OAuth标识服务器,OAuth不执行任何操作(除非我错过了它(来强制执行必须通过API公开的数据类型。你应该在存储数据之前检查一下。

以及拒绝配置文件部分,我认为这应该是您在应用程序上设置的一个标准,以表示您不接受没有firstName的配置文件。

我也遇到过同样的问题。对于某些配置文件,"userinfo"作用域不返回given_name和family_name。在我找到原因之前,当没有返回值时,我会为这两个值使用空白字符串。我不能假设谷歌让人们在不提供名字和姓氏值的情况下创建谷歌账户。谷歌API存在漏洞,速度缓慢,令人困惑。所以我宁愿假设这是API的问题。

尝试userinfo API的v3,它已经非常可靠地为我返回了given_name

https://www.googleapis.com/oauth2/v3/userinfo

相关内容

  • 没有找到相关文章

最新更新