Github 登录开发
title: Github登录开发 id: 4f5d47afa2466f2542fde19c84057986 tags: [] date: 2000/01/01 00:00:00 updated: 2022/12/09 13:40:03 isPublic: true --#|[分隔]|#--
Github登录开发
Github登录第三方网站的功能的开发者验证流程相对来说很简单。
登陆Github后,打开 Setting > Developer setting > OAuth applications,然后点击 Register a new application,创建一个应用程序。
创建时填写一下信息,提交后就能得到一套 clientID 和 clientSecrets。

后面可参照 官方文档 来继续开发,主要流程如下。
跳转登录地址
前端跳转 github 授权登录地址:
使用 ? 和 & 的形式,带入以下参数:
client_id
必填项。注册时从GitHub收到的客户端ID 。
redirect_uri
用户同意授权后跳转的地址,如果不则会直接跳转上一步的 Authorization callback URL 这个地址。请参阅以下有关重定向URL的详细信息。
login
建议用于登录和授权应用程序的特定帐户。
scope
以空格分隔的范围列表。如果未提供,则scope对于未授权该应用程序任何作用域的用户,默认为空列表。对于拥有该应用程序授权范围的用户,不会向用户显示带有范围列表的OAuth授权页面。取而代之的是,流程的这一步将自动完成用户已为应用程序授权的一组作用域。例如,如果用户已经执行了两次Web流程,并已授权一个令牌具有user范围,并且已授权另一个令牌具有repo范围,则不提供的第三个Web流程scope将接收一个具有userandrepo范围的令牌。
state
不可猜测的随机字符串。它用于防止跨站点请求伪造攻击。我用它带个字符串用作标识。
allow_signup
在OAuth流程中,是否向未认证的用户提供注册GitHub的选项。默认值为true。false当策略禁止注册时使用。
最终,我跳转的链接形式如下:
用户授权登录
跳转地址后,用户同意授权登录,会调至指定的回调地址,同时以 ? 和 & 的形式,把用户 code 和之前传入的 state 带过来。
这个回调地址自然是我们的网站了,我们从 url 中获取 code,用接口传给后台,期望得到用户的个人信息。
注意这个 code 的有效期为10分钟,且只能使用一次。
后台拿到 code,需要做后面这两步。
通过 code 获取用户的 access_token
调用接口:
入参如下:
client_id
**必需的。**您从GitHub收到的OAuth应用的客户端ID。
client_secret
**必需的。**您从GitHub收到的OAuth应用程序的客户端密码。
code
**必需的。**您收到的用户的code。
redirect_uri
授权后将用户发送到应用程序中的URL。
state
您在步骤1中提供的不可猜测的随机字符串。
请求后,会得到类似下面格式的响应:
需要对齐解析,我使用的 npm 自带工具 qs:
可以得到用户的 access_token。
通过用户的 access_token 获取用户个人信息
最后这就是最终步骤了,调用以下接口
需要添加两个请求头:
发送后,就能得到用户的个人信息了。
Last updated