Google+ API 不会在登录请求中返回个人资料名称



google文档HERE明确指出

你不应该请求userinfo。个人资料或以上。Me与[https://www.googleapis.com/auth/plus.login] scope的组合,因为它们是隐式包含的,并且会为您的用户创建一个令人困惑的权限对话框。

…但是如果我不使用

https://www.googleapis.com/auth/userinfo.emailhttps://www.googleapis.com/auth/userinfo.profile以及https://www.googleapis.com/auth/plus.login api将不返回用户的电子邮件地址或名称。

如果我不应该将userinfo范围与plus.login范围一起使用,我如何获得用户的姓名和电子邮件?

您需要userinfo.email来获取电子邮件地址,但是您应该能够请求而不需要也请求userinfo.profileplus.login应该允许您访问"GET/plus/v1/people/{userid}"调用,该调用应该返回以下字段/对象(至少):

  • name -包含名称分解为
  • 字段的对象<<li> displayName/gh>昵称

我在获取个人资料和电子邮件地址方面也遇到了困难。最后,我发现我可以使用这些作用域来获取所有内容:

"https://www.googleapis.com/auth/plus.login","电子邮件"、"概要"

似乎谷歌在它的文档中有点模糊。他们说瞄准镜是加号。login'包含displayName和电子邮件,但是,在使用不同的Google帐户(普通Gmail, Google+, Google Apps)运行几次测试后,这似乎是错误的。

如果用户没有Google+的个人资料,"+"。login'将不包含displayName。这种情况似乎也发生在Google Apps账户上。因此,要覆盖所有可能的Google帐户状态,安全的做法是请求:

  • https://www.googleapis.com/auth/plus.login
  • https://www.googleapis.com/auth/plus.me
  • https://www.googleapis.com/auth/userinfo.email
  • https://www.googleapis.com/auth/userinfo.profile

他们说最后两个已经被弃用了,但是,如果你不使用它们,有些帐户将不会返回所有的基本信息。我不知道这是否与谷歌账户的"年龄"有关,还是仅仅是谷歌的一个错误。

对我起作用

scope = https://www.googleapis.com/auth/userinfo.profile email

>用户信息。profile和email中有空格

我使用以下作用域参数实现了多作用域。

scope = https://www.googleapis.com/auth/userinfo.email+profile

相关内容

最新更新