googleapis.com/oauth2/v2/userinfo返回null值

问题描述 投票:0回答:1

以下网址我一直用于谷歌登录我的网站。

登录URL

https://accounts.google.com/o/oauth2/auth?scope='.urlencode('https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email') . '&redirect_uri=' . urlencode(CLIENT_REDIRECT_URL) . '&response_type=code&client_id=' . CLIENT_ID . '&access_type=online

访问令牌URL

https://accounts.google.com/o/oauth2/token

UserInfo端点URL我想在2019年3月7日之后使用

https://www.googleapis.com/oauth2/v2/userinfo (returns null values)

我目前正在使用的Google+端点网址

https://www.googleapis.com/plus/v1/people/me (returns email, names, etc)

我想获取用户名和电子邮件以保存到我的数据库。如何通过上面提到的新网址获取姓名和电子邮件?

api migration google-plus google-signin
1个回答
0
投票

根据您链接的示例代码,您需要进行或尝试至少进行一些更改。

第一个是您可能需要请求不同的范围,因为范围决定了将返回的内容。该代码依赖于无效或不再建议的范围。您应该使用scopes获取个人资料和电子邮件:

  • OpenID的
  • 轮廓
  • 电子邮件

(您使用的较长范围名称也应该有效,但您也可以尝试使用这些更简单的名称。)

所以第2步中的login_url可能看起来更像是这样的:

$login_url = 'https://accounts.google.com/o/oauth2/v2/auth?scope=' . urlencode('openid profile email') . '&redirect_uri=' . urlencode(CLIENT_REDIRECT_URL) . '&response_type=code&client_id=' . CLIENT_ID . '&access_type=online';

虽然userinfo v2端点仍然是半维护的,但已弃用。相反,请尝试以下方法之一:

但是,仍有一些事情需要注意:

  • 并非所有数据都可用。如果用户尚未设置某些配置文件信息,则API无法提供该信息。
  • 这些字段与Plus端点中的字段不同。因此,虽然数据可能存在,但它可能位于返回的对象中的不同位置。
© www.soinside.com 2019 - 2024. All rights reserved.