当前位置: 首页 > 知识库问答 >
问题:

谷歌的用户信息API是否提供任何保证?

吕高寒
2023-03-14

几个月前,我们为我们的网站实施了谷歌OAuth。到目前为止,有两个用户(约100个)的用户信息配置文件不完整。我们使用有效的令牌调用“https://www.googleapis.com/oauth2/v1/userinfo?”,并且响应 json 仅包含 [区域设置、verified_email、电子邮件、id]。

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

响应应始终包括:[id、email、verified_email、name、given_name、family_name,时区、性别],有时还包括:[picture,locale]

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

更新 3/6/14
我能够重现问题。我们将用户发送到Google请求,两个范围:

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

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

据我所知,谷歌不允许用户挑选他们允许的范围。要么全有,要么全无。但是,我能够从URL中删除用户信息.profile范围并重新加载页面。这导致我使用有效的令牌发回,但不是正确的范围。我需要命中令牌信息终结点,并确保已授权正确的作用域。

共有3个答案

西门展
2023-03-14

我也遇到过同样的问题。对于某些个人资料,“userinfo”范围不会返回given_name和family_name。在我找到原因之前,我在没有返回值的情况下为这两个使用空白字符串。我不能假设Google让人们在不提供名字和姓氏值的情况下创建Google帐户。Google API有错误、缓慢且令人困惑。所以我宁愿假设这是API问题。

边明煦
2023-03-14

NB:这是我的想法:

我也已经与OAuth合作了一段时间,并且在Facebook个人资料的多次场合中遇到了这个问题。说实话,我不明白为什么请求应该返回不完整的数据(假设范围是正确的),除了来自提供者的实际配置文件不完整(尽管你有这个[区域设置,verified_email,电子邮件,id]而没有[名字,姓氏]是没有意义的)。例如,某些个人资料没有个人资料图片 e.t.c.

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

至于拒绝简介部分,我认为这应该是你在申请中设定的一个标准,比如说,你不接受没有< code>firstName的简介。

夏烨霖
2023-03-14

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

尝试吊销令牌并无论如何都要命中终结点,看看会得到什么结果。

 类似资料:
  • null 你们能给我举个例子吗 谢谢

  • 本文向大家介绍IP地址是否提供有用的跟踪信息?,包括了IP地址是否提供有用的跟踪信息?的使用技巧和注意事项,需要的朋友参考一下 IP地址是Internet上计算机的地址。通常使用的示例是可以通过URL进行访问的Web服务器,该URL在幕后转换为IP地址,但是IP地址可用于查找Internet上的任何计算机。 当普通的家庭宽带用户访问Internet时,他们将通过其Internet服务提供商(ISP

  • 自2012年1月起,谷歌开始用“选择颜色”突出显示搜索区域。详情如下:http://googlesystem.blogspot.in/2012/01/highlight-areas-in-google-maps.html 有人知道这是否可以使用GoogleMapsAPI3编程实现吗?我想在地图上突出显示我的城市,如上面的链接所示。 我已经尝试了搜索城市的Geocode API。那个应用编程接口只给

  • 我想从谷歌地图API接收道路信息,就像普通的街道信息一样。 例如,在谷歌地图应用程序中,您可以看到每条道路的交通情况。是否有任何方法可以在数据中接收此信息,而不仅仅是在屏幕上查看? 我需要得到的信息,如名称,交通,限速和起点和终点。 我考虑一些类似于现有街道信息的东西,我会给出一个位置(long,lat),系统会返回附近最近的道路(也可能是十字路口)。 有没有办法通过谷歌地图API获取这些信息?如

  • 使用Google的OpenIDConnect身份验证系统时,可以在<code>范围电子邮件范围,“电子邮件”和“email_verified”声明将包含在,作为成功的OAuth2身份验证会话的一部分返回。 这是谷歌留档的一个例子: ID令牌的有效负载 ID标记是包含一组名称/值对的JSON对象。下面是一个为可读性格式化的示例: 但是,请求范围似乎对id_token的内容没有任何影响。为了检索配置文

  • 我正在使用谷歌OAuth API使用此网址获取用户信息 使用示波器 https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email 我得到了以下回应 我正在寻找电子邮件,但无法回复。