跳到主要内容

授权登录及账户绑定

一键登录

前端应建立/oauth2路由作为Discord回调前端页面的空白验证页面,/login路由作为登录页面。在用户点击Discord授权页取消按钮时返回/login页面,点击授权后跳转/oauth2路由进行授权码验证。后端返回时/oauth2路由会带有jwt query参数,前端将其传入/email/me进行验证即可。如下为样例伪代码:

  useEffect(() => {
// 空白页拿到jwt,去后端获取用户信息
let jwt = searchParams.get('jwt');
fetch(`${HOST}/email/me`,{
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${jwt}`
}
}).then(res=>res.json()).then(data=>{
if (data.status_code === 200) {
// 前端可将获取到的用户信息放置在前端的cookie、session、localstorage中进行保存
window.location.href = '/dashboard';
}else{
window.location.href = '/login';
}
})
})
运行环境方法URI解释
生产环境GET/discord/loginurl获取Button登录的超链接
开发环境GET/discord/loginurl_dev获取Button登录的超链接,回调URI为http://localhost:3000/oauth2

账户绑定

本项目提供多个登录渠道,对于从其他渠道登录进来的用户应当引导其绑定Discord方便后续进入用户群,增强用户粘性。 前端应用向Discord发起授权请求, 跳转/oauth2路由,在获取向/discord/bindAPI发起POST请求。

运行环境方法URI解释参数
生产环境GET/discord/bind_url获取绑定Discord账户的URL
开发环境GET/discord/bind_url_dev获取绑定Discord账户的URL,回调URI为http://localhost:3000/oauth2
生产环境POST/discord/bind绑定Discord账号user_id,discord_id
开发环境POST/discord/bind_dev绑定Discord账号user_id,discord_id