google文档HERE明确指出
你不应该请求userinfo。个人资料或以上。Me与[https://www.googleapis.com/auth/plus.login] scope的组合,因为它们是隐式包含的,并且会为您的用户创建一个令人困惑的权限对话框。
…但是如果我不使用
https://www.googleapis.com/auth/userinfo.email
和https://www.googleapis.com/auth/userinfo.profile
以及https://www.googleapis.com/auth/plus.login
api将不返回用户的电子邮件地址或名称。
如果我不应该将userinfo
范围与plus.login
范围一起使用,我如何获得用户的姓名和电子邮件?
您需要userinfo.email
来获取电子邮件地址,但是您应该能够请求而不需要也请求userinfo.profile
。plus.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