使用使用Google+ API登录(通过.NET)时,我获取了访问令牌,然后使用以下内容获取用户信息:
https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=XXX
这会返回大量用户信息,但不用户的电子邮件地址。
如果我然后重新尝试登录(使用完全相同的代码),那么在第二次尝试时,返回的用户信息包含"电子邮件"领域!然后,任何后续登录尝试都将按预期返回电子邮件地址。
请注意,使用的范围是:
https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email
有人知道为什么第一次不会返回电子邮件地址吗?
这是一个问题,因为我在第一次尝试时需要电子邮件地址才能创建用户帐户。
由于
答案 0 :(得分:2)
这看起来很奇怪,虽然它可能与不推荐使用的 userinfo 方法有关(并计划在9月删除),转而使用 plus 端点。由于您已经在使用 plus.login 范围,因此您可以切换到使用plus.people.get端点,并应更改为使用电子邮件范围来请求电子邮件信息。
有关这些更改的详情,请参阅https://developers.google.com/+/api/auth-migration。