Google API userinfo请求返回比我需要更多的信息

时间:2019-01-29 17:11:55

标签: oauth google-api google-oauth2 userinfo

我刚收到Google的一封电子邮件,警告我我们的应用程序使用了即将被关闭的Google+ API。令人惊讶的是,因为我们故意不使用任何Google+ API。电子邮件中指定我们使用plus.me方法或OAuth范围。

我怀疑可能会产生警告,因为当我们请求访问Google Calendar API时,我们还会要求userinfo.email范围,以便提醒用户我们要发布到哪个帐户。我们要求此应用程序的作用域的完整列表是:

https://www.google.com/calendar/feeds/

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

要获取电子邮件地址,我们使用:

https://www.googleapis.com/oauth2/v3/userinfo?alt=json&access_token=xxx

但是,它返回的不仅是我们感兴趣的电子邮件地址:

{
  "sub":"xxx",
  "name":"John Smith",
  "given_name":"John",
  "family_name":"Smith",
  "profile":"https:\/\/plus.google.com\/xxx",
  "picture":"https:\/\/lh3.googleusercontent.com\/xxx/photo.jpg",
  "email":"xxx@example.com",
  "email_verified":true
}

对于Google为什么警告我们有关plus.me的使用,这听起来像是一个合理的解释吗?

有人知道响应中的“个人资料”值在Google+关闭后是否会消失,还是我需要寻找其他方法来请求电子邮件地址?

一种更好的方法是仅请求该帐户的电子邮件地址,从而避免与Google+关闭有关的任何潜在问题?

编辑后添加

我刚从Google收到以下澄清电子邮件,听起来好像我对原始电子邮件的恐慌是不必要的:

  

亲爱的开发人员,

     

本周早些时候,我们向您发送了一封与您的项目有关的电子邮件,   将受到Google+ API关闭的影响,这也会影响   Google+ OAuth范围的请求。

     

该电子邮件列出了您的一个或多个项目正在请求   “ plus.me”的范围,因此会受到影响。我们想澄清一下   只有直接要求“ plus.me”范围的项目才是   受到影响。此范围可能已在某些电子邮件中列出,即使没有   由您的项目直接请求。如有任何混淆,我们深表歉意   造成的。

     

如果您直接请求“ plus.me”范围,则任何其他Google+   OAuth范围,或进行任何Google+ API调用,请确保您   在2019年3月7日之前从您的项目中删除这些请求。

     

查看您的项目是否直接请求“ plus.me”或任何其他内容   其他Google+ OAuth范围:

     

如果您的项目是使用Google Apps脚本编写的,则可以查看   通过查看项目属性来确定项目要求的范围   在应用程序脚本编辑器中。如果您的项目不是用Google Apps编写的   脚本,请检查您的代码以获取对OAuth中“ plus.me”的引用   范围要求。我们建议您使用   支持登录或社交功能的第三方库,例如   这些也可能会受到关机的影响。感谢您的重视   Google+开发人员。

     

此致Google+ API小组

1 个答案:

答案 0 :(得分:0)

我认为有关使用“ plus.me”的电子邮件是Google的错误。我只使用范围“ https://www.googleapis.com/auth/userinfo.email”(与“电子邮件”相同),但是Google在该电子邮件中警告我我使用“ plus.me”。当我检查我的API控制台时,我看到那里有3个作用域,显示为灰色,无法删除。当我将鼠标悬停在“配置文件”上时,会出现“ https://www.googleapis.com/auth/plus.me”,由于Google加上关机原因,使用https://www.googleapis.com/auth/plus.me并不安全,但是“配置文件”应该可以。将“个人资料”显示为plus.me具有误导性。我认为Google无法很好地关闭google +。

enter image description here

参数子,配置文件,图片(范围“ openid”)始终包含在内。如果仅使用范围“ email”,则仍将包含“ openid”范围的参数。但是您不应该使用named_name family_name这个名称-我只能在“配置文件”范围内看到它。我已经测试了您的两个范围,并且在请求https://www.googleapis.com/oauth2/v3/userinfo

之后没有得到3个参数

我认为Google在用户同意屏幕上也存在错误。因为我尝试单独使用范围“ openid”,“个人资料”,“电子邮件”,但屏幕上始终是相同的文本,所以要继续,Google将与Example.com共享您的姓名,电子邮件地址和个人资料图片。但是,实际上,如果不要求“电子邮件”范围,则不会在响应数据中提供该电子邮件...但是Google向用户表示该电子邮件将被共享。

此外,您可以将范围“ https://www.googleapis.com/auth/userinfo.email”更改为“电子邮件”。仅Google特定范围需要完整的URI。


更新

是的,正如预期的那样,电子邮件是一个错误。 Google只是发送更正电子邮件...

[更正] Google+ API将于2019年3月7日关闭

  

亲爱的开发人员,

     

本周早些时候,我们向您发送了一封与您的项目相关的电子邮件,这将受到Google+ API关闭的影响,这也会影响对Google+ OAuth范围的请求。

     

该电子邮件列出了您的一个或多个项目正在请求“ plus.me”范围,因此将受到影响。我们想澄清的是,只有直接请求“ plus.me”范围的项目会受到影响。即使您的项目没有直接要求,此范围可能已在某些电子邮件中列出。对于造成的任何混乱,我们深表歉意。

     

...