GitHub OAuth app 授权用户登录的时候如何获取用户的邮箱?
1. 运行环境
win10、PHP7.3、laravel8
2. 问题描述?:
一个web网站系统对接一下GitHub登录,这里是他们的文档
我的操作步骤如下
- 我尝试在页面上请求
https://github.com/login/oauth/authorize?client_id=xxx&scope=user,user:email - 然后通过
POST https://github.com/login/oauth/access_token获取access_token - 再通过
access_token请求https://api.github.com/user获取用户信息
我尝试的操作
- 在第3步请求
https://api.github.com/user/emails可以拿到我的邮箱,但是拿到信息里不包含用户的昵称 - 查询github相关文档,得到的建议和我的操作一致
3. 您期望得到的结果?

4. 您实际得到的结果?
第三步获取到的用户信息的邮箱的值为null,截图如下




关于 LearnKu
试了下超哥的扩展包,确实好用,也走通了。但是调用和
github中文档描述的不完全一致。记录一下说明如下
$provider = $socialite->driver('github');就是为了实例化一个GithubProvider(vendor/overtrue/socialite/src/Providers/GitHubProvider.php)$access_token = $provider->getAccessToken($code);是按照Github授权 OAuth 应用中的描述,需要用code去获取access_token$user = $provider->user($access_token);这一步是直接获取用户的信息。注意了这里其实是请求了多次github用于获取不同的信息,比如用户名、邮箱等