我一直用于Google的以下URL登录我的网站。
登录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(新URL)
https://www.googleapis.com/oauth2/v2/userinfo (returns null values)
我当前正在使用的Google+端点URL
https://www.googleapis.com/plus/v1/people/me (returns email, names, etc)
我想获取用户名和电子邮件以保存在数据库中。 如何获得上面提到的具有UserInfo端点URL的名称和电子邮件?
答案 0 :(得分:0)
根据您链接的示例代码,至少需要进行一些更改。
首先,您可能需要请求不同的范围,因为范围确定了将返回的内容。该代码依赖于无效或不再建议的范围。您用于获取个人资料和电子邮件的scopes为:
(您使用应该更长的作用域名称也可以,但是您可能也想尝试使用这些更简单的名称。)
因此,第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端点仍处于半维护状态,但已弃用。 相反,请尝试以下操作之一:
https://www.googleapis.com/oauth2/v3/userinfo
上的userinfo v3端点userinfo_endpoint
值关联的网址。但是,仍有一些事情要注意:
答案 1 :(得分:0)
访问令牌URL
if (d % 1 == 0) { Console.WriteLine(String.Format("{0:0.0}", d)); } else { Console.WriteLine(d); }
(返回空值)
您应提供有效的凭据,以得到these openid endpoint的回复
通过Authorization
标头或QueryParams;例如:
https://www.googleapis.com/oauth2/v2/userinfo
https://www.googleapis.com/oauth2/v2/userinfo?access_token=FOO_BAR...
,access_token
或id_token
也适用于token_handle
(v3
)