模拟 Github 第三方登录流程
一个应用要求 OAuth 授权,必须先到对方的网站登记,让对方知道是谁在请求。
我们这里就应该到 Github 去登记一下。登记页面长这样:
可以看出必须要填的内容有:
- 应用名称
- 应用主页URL
- 用户同意授权后的跳转URL
提交表单之后,Github 会返回给我们一个 Client ID 和 Client Secret,这就是该应用的身份识别码。
假如用户想要登录 A 网站,A 网站让用户提供第三方网站的数据。证明自己的身份。
假如这个第三方网站是 Github,整个授权流程如下:
- A 网站让用户跳转到 Github 的授权页面,并携带 client_id 和 redirect_url
- Github 的授权页面会询问 ” A 网站要求获得 xx 权限,你是否同意?“
- 用户同意之后,Github会重定向到之前提供的redirect_url,同时会携带一个授权码
- A 网站使用授权码,带上之前的 Client ID 和 Client Secret,向 Github 请求令牌(access_token)
- Github 返回令牌
- A 网站使用该令牌,具体表现为在 Authorization 头部携带该令牌,向 Github 请求用户数据
具体 api 参考这里