作者:初2新生_349 | 来源:互联网 | 2023-09-03 18:23
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);})})
})