2

几个月前,我们为我们的网站实施了 Google OAuth。到目前为止,两个用户(约 100 个)的用户信息配置文件不完整。我们使用有效令牌调用“ https://www.googleapis.com/oauth2/v1/userinfo ?”,响应 json 仅包含 [locale, verify_email, email, id]。

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

回复应始终包括:[id、email、verified_email、name、given_name、family_name、timezone、gender] 有时包括:[picture、locale]

有谁知道 UserInfo API 有什么样的保证?我应该拒绝不完整的个人资料为无效吗?对于配置文件不完整的原因,还有其他解释吗?

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

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

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

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

4

4 回答 4

0

注意:这就是我的想法

我现在也已经使用 OAuth 一段时间了,例如在 Facebook 个人资料中遇到过这个问题。老实说,我不明白为什么请求应该返回不完整的数据(假设范围是正确的),除了来自提供者的实际配置文件是不完整的(尽管你没有这个[locale, verified_email, email, id]没有意义[firstName, lastName])。例如,某些个人资料没有个人资料图片等

总而言之,我会说:不能保证(这不仅仅是谷歌特有的)。我之前写过一个 OAuth 身份服务器,并且 OAuth 什么都不做(除非我错过了它)来强制执行您必须通过 API 公开的数据类型。您应该在存储数据之前检查数据。

拒绝个人资料部分,我认为这应该是您在应用程序中设置的标准,例如说您不接受不接受个人资料firstName

于 2013-03-07T20:55:44.583 回答
0

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

尝试撤销您的令牌并点击端点,看看您会得到什么结果。

于 2013-03-04T15:56:21.877 回答
0

我有同样的问题。对于某些配置文件,“userinfo”范围不返回 given_name 和 family_name。在我找到原因之前,当没有返回值时,我对这两个使用空白字符串。我不能假设谷歌让人们创建谷歌帐户而不提供名字和姓氏的一些值。Google API 有缺陷、缓慢且令人困惑。所以我宁愿假设这是 API 问题。

于 2014-12-31T16:40:07.633 回答
0

尝试用户信息 API 的 v3,它given_name为我返回了相当可靠的结果:

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

于 2018-09-06T03:59:48.750 回答