第三方授权登录
OAuth2.0是目前最流行的授权机制,用来授权第三方应用,获取用户数据。
GitHub登录
GitHub应用登记
去github主页新建一个OAuth App,按如下提示填写信息 地址

创建完成后记住页面的Client ID和Client Secret,后面开发时需要用到这两个参数。
跳转授权
跳转链接,client_id、redirect_uri就是之前创建参数配置自己的就行。
window.location.href =
"https://github.com/login/oauth/authorize?client_id=xxxxxxxxxxxxx&redirect_uri=http://localhost:8082/redirect";
后端实现
exports.oauth = async (req, res) => {
//获取code
let { code } = req.body;
if (!code) {
return res.json({ code: 400, msg: "参数错误" });
}
try {
//获取token
let tokenRes = await axios({
url: "https://github.com/login/oauth/access_token",
method: "post",
data: {
client_id: "xxxxxx",
client_secret: "xxxxxx",
code,
},
headers: {
accept: "application/json",
},
});
if (!tokenRes.data.access_token) {
return res.json({ code: 400, msg: "token获取失败" });
}
let token = tokenRes.data.access_token;
//获取用户信息
let userRes = await axios({
url: "https://api.github.com/user",
headers: {
accept: "application/json",
Authorization: `token ${token}`,
},
});
let { avatar_url, name } = userRes.data;
res.json({ code: 200, data: { avatar_url, name }, msg: "操作成功" });
} catch (err) {
console.log(err);
res.json({ code: 500, msg: "服务器错误" });
}
};这样就获取到用户信息,可以根据自己的业务需求将获取到的信息存入到用户表中。需要注意的是由于访问github不稳定,所以要做好错误处理。
效果展示
