Firebase Discord OAuth2 示例项目教程
1. 项目的目录结构及介绍
firebase-discord-oauth2-example/
├── functions/
│ ├── index.js
│ └── package.json
├── .firebaserc
├── .gitattributes
├── .gitignore
├── LICENSE
├── README.md
└── firebase.json
- functions/: 包含云函数的目录,主要逻辑代码位于
index.js
文件中。 - .firebaserc: Firebase 项目配置文件,定义了项目别名。
- .gitattributes: Git 属性配置文件,用于指定文件的属性。
- .gitignore: Git 忽略文件配置,指定哪些文件不需要被 Git 追踪。
- LICENSE: 项目许可证文件,本项目使用 MIT 许可证。
- README.md: 项目说明文档,包含项目的基本介绍和使用说明。
- firebase.json: Firebase 配置文件,定义了项目的各种配置,如云函数、托管等。
2. 项目的启动文件介绍
functions/index.js
index.js
是云函数的主要入口文件,负责处理 Discord OAuth2 认证流程。以下是文件的主要内容:
const functions = require('firebase-functions');
const firebase = require('firebase-admin');
const axios = require('axios');
const express = require('express');
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const crypto = require('crypto');
// Firebase 初始化
firebase.initializeApp();
const app = express();
app.use(bodyParser.json());
app.use(cookieParser());
// Discord OAuth2 配置
const clientId = 'YOUR_CLIENT_ID';
const clientSecret = 'YOUR_CLIENT_SECRET';
const redirectUri = 'YOUR_REDIRECT_URI';
// 路由处理
app.get('/api/login', (req, res) => {
// 重定向到 Discord 授权页面
});
app.get('/api/auth', async (req, res) => {
// 处理 Discord 返回的授权码
});
exports.app = functions.https.onRequest(app);
主要功能
- 初始化 Firebase: 使用
firebase-admin
初始化 Firebase 应用。 - 配置 Discord OAuth2: 设置 Discord 客户端 ID、客户端密钥和回调 URI。
- 路由处理: 定义
/api/login
和/api/auth
路由,分别处理用户登录和授权码回调。
3. 项目的配置文件介绍
.firebaserc
{
"projects": {
"default": "your-firebase-project-id"
}
}
- projects: 定义了默认的 Firebase 项目 ID。
firebase.json
{
"functions": {
"source": "functions"
},
"hosting": {
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"function": "app"
}
]
}
}
- functions: 指定云函数的源代码目录。
- hosting: 配置托管设置,包括公共目录、忽略文件和重写规则。
通过以上配置,项目可以正确部署和运行,实现通过 Discord OAuth2 进行用户认证的功能。