backgroundbackground
Github-OAuth授权教程

Github-OAuth授权教程

Github / OAuth

教程

2024-05-02 07:00

一、OAuth介绍

OAuth(Open Authorization)是一种 Industry Standard 的授权协议,允许用户将自己的资源授权给第三方应用程序,而不需要将用户名和密码提供给第三方应用程序

1、OAuth的角色

  1. Resource Server(资源服务器):拥有用户资源的服务器,例如Google、Facebook等。
  2. Client(客户端):第三方应用程序,例如一个移动应用程序或Web应用程序。
  3. Authorization Server(授权服务器):负责验证用户身份和颁发access token的服务器,通常与Resource Server相同。
  4. User(用户):拥有资源的用户。

2、Auth的步骤

Step 1: 客户端注册

客户端注册到授权服务器,获取客户端ID和客户端密钥。

Step 2: 用户授权

用户访问客户端,客户端重定向用户到授权服务器的授权页面。

Step 3: 授权服务器验证

授权服务器验证用户身份,显示授权页面,询问用户是否同意授权。

Step 4: 授权

用户同意授权,授权服务器重定向用户回客户端,带有授权码。

Step 5: 客户端获取access token

客户端使用授权码请求access token,授权服务器颁发access token。

Step 6: 客户端访问资源

客户端使用access token访问资源服务器,获取用户的资源。

二、Github-OAuth流程

1、应用登记

在这里注册你的应用:Github应用注册

Github应用注册

2、获取client_idclient_secret

Github的client_id和client_secret

3、触发登陆动作

当用户在你的网站点击登陆的时候,跳转到这个地址:

https://github.com/login/oauth/authorize

同时带上client_idredirect_uri

示例:

https://github.com/login/oauth/authorize?client_id=114&redirect_uri=http://localhost:3000/redirect

4、回调并请求令牌

用户在Github鉴权通过后,Github会跳到之前指定的redirect_uri地址,同时带上鉴权码code

这时候后端即可拿到鉴权码code、应用IDclient_idclient_secret向Github请求令牌了

接口:

POST https://github.com/login/oauth/access_token

参数:

参数名称类型说明
client_idstring必填。 从 GitHub 收到的 OAuth app 的客户端 ID。
client_secretstring必填。 从 GitHub 收到的 OAuth app 的客户端密码。
codestring必填。 收到的作为对步骤 1 的响应的代码。
redirect_uristring用户获得授权后被发送到的应用程序中的 URL。

示例

https://github.com/login/oauth/access_token?client_id=114&client_secret=514&code=810

5、获取用户数据

有了令牌后,就可以向Github获取最终需要的数据了

获取用户数据:

接口:GET https://api.github.com/user

请求头:Authorization: Bearer OAUTH-TOKEN


参考: https://docs.github.com/zh/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps