1.新建授权app(OAuth—Apps)
创建成功以后:Client ID(key)和 Client Secret(密钥)是需要用到的
2.使用的node框架:express
下载node-fetch
yarn add node-fetch
或
npm i node-fetch -s
新建login路由:
scope:授权服务
state:回调参数,
router.get("/login", function (req, resp) {
let path = "https://github.com/login/oauth/authorize";
path += '?client_id=';
path += '&state=state';
path += '&scope=user:email';
resp.redirect(path);
})
直接跳转到github第三方登陆页面,授权成功会回调在OAuth Apps设置的回调url
新建github路由
router.get("/github", function (req, resp) {
let path = 'https://github.com/login/oauth/access_token';
const params = {
client_id: '',
client_secret: '',
code: req.query.code
}
fetch(path, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(params)
}).then(function (res) {
return res.text();
}).then(function (body) {
const args = body.split('&');
let arg = args[0].split('=');
const access_token = arg[1];
console.log(body);
console.log(access_token);
return access_token;
}).then(async (token) => {
const url = ' https://api.github.com/user?access_token=' + token;
await fetch(url)
.then(res => {
return res.json();
})
.then(res => {
console.log(res);
resp.send(res);
})
})
})