我正在关注Github 的 OAuth 流程 https://developer.github.com/v3/oauth/,并获取一个访问令牌,使我能够访问用户的电子邮件范围。当我用代码交换访问令牌时,使用https://github.com/login/oauth/access_token https://github.com/login/oauth/access_token端点,我得到以下响应:
{
access_token: '83f42..xxx’,
token_type: 'bearer',
scope: 'user:email'
}
看起来很棒。因此,我发出此请求,使用令牌来获取我的用户数据:
Accept-Language: en-us
Accept: application/json
Authorization: token 83f42..xxx
Accept-Encoding: gzip, deflate
GET https://api.github.com/user
我确实得到了我的用户对象作为响应,但电子邮件属性为空。还有其他人遇到这个问题吗?
我找出了为什么会发生这种情况以及如何解决它。根据docs https://developer.github.com/v3/users/#get-a-single-user:
注:返回的邮箱为用户公开可见的邮箱地址
(或者null
如果用户未在其帐户中指定公共电子邮件地址
轮廓)。
在您的 GitHub 配置文件设置中,在公共邮箱,一些用户(包括我自己)将该选项设置为“不显示我的电子邮件地址”。致电给/user
仅返回公共电子邮件地址,因此如果用户不希望显示该地址,API 将尊重这一点。
要获取用户的电子邮件地址(无论其是否公开),请使用以下调用:/user/emails https://developer.github.com/v3/users/emails/#list-email-addresses-for-a-user。您将按照与访问令牌完全相同的方式使用访问令牌/user
要求:
Accept-Language: en-us
Accept: application/json
Authorization: token 83f42..xxx
Accept-Encoding: gzip, deflate
GET https://api.github.com/user/emails
这次调用给了我以下 JSON 响应:
[
{
"email": "use[email protected] /cdn-cgi/l/email-protection",
"primary": true,
"verified": true
}
]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)