Skip to content

huazie/github-oauth-netlify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

github-oauth-netlify

Netlify Status License GitHub Repo stars

基于 Netlify 云函数的 GitHub OAuth 认证代理。

英文说明/English Documentation

项目结构

github-oauth-netlify/
├── netlify.toml              # Netlify 配置
├── package.json
└── netlify/
    └── functions/
        └── auth.js           # OAuth 云函数 (POST /api/auth)

工作原理

sequenceDiagram
    participant C as 前端
    participant N as Netlify Function<br/>/api/auth
    participant G as GitHub

    C->>N: POST /api/auth<br/>{ client_id, client_secret, code }
    N->>G: POST /login/oauth/access_token<br/>(x-www-form-urlencoded)
    G-->>N: { access_token, token_type, scope }
    N-->>C: { access_token, token_type, scope }
Loading

云函数只做一件事:接收前端发来的 OAuth 参数,转发给 GitHub 的 token 端点,把结果原样返回。

快速开始

1. 创建 GitHub OAuth App

前往 GitHub Developer SettingsNew OAuth App

字段
Application name 任意
Homepage URL 你的站点地址(自定义域名或 *.netlify.app
Authorization callback URL 前端处理回调的地址

2. 部署到 Netlify

将项目推送到 GitHub,在 Netlify 中关联该仓库即可自动部署。

3. 设置环境变量

在 Netlify 控制台 → Site settings → Environment variables 中无需设置环境变量,因为 client_idclient_secretcode 均由前端在请求体中传入。

4. 前端调用示例

// 前端获取到 GitHub 回调的 code 后:
const res = await fetch("https://你的域名.netlify.app/api/auth", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    client_id: "你的 Client ID",
    client_secret: "你的 Client Secret",
    code: "GitHub 回调的 code",
  }),
});

const data = await res.json();
console.log(data.access_token);

本地调试

# 全局安装 Netlify CLI
npm install -g netlify-cli

# 启动本地开发服务器
npm run dev

npm run dev 等同于执行 netlify dev,云函数将在 http://localhost:8888/api/auth 可用。

License

MIT © huazie

About

Deploy Github OAuth Proxy to Netlify

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors