5344
5432
1万
管理员
本站资源如失效,请点击反馈!
A 网站让用户跳转到 GitHub。 GitHub 要求用户登录,然后询问"A 网站要求获得 xx 权限,你是否同意?" 用户同意,GitHub 就会重定向回 A 网站,同时发回一个授权码。 A 网站使用授权码,向 GitHub 请求令牌。 GitHub 返回令牌. A 网站使用令牌,向 GitHub 请求用户数据。
$ git clone [email protected]:ruanyf/node-oauth-demo.git$ cd node-oauth-demo
index.js:改掉变量clientID and clientSecret public/index.html:改掉变量client_id
$ npm install
$ node index.js
https://github.com/login/oauth/authorize? client_id=7e015d8ce32370079895& redirect_uri=http://localhost:8080/oauth/redirect
http://localhost:8080/oauth/redirect? code=859310e7cecc9196f4af
const oauth = async ctx => { // ...};app.use(route.get('/oauth/redirect', oauth));
const requestToken = ctx.request.query.code;
const tokenResponse = await axios({ method: 'post', url: 'https://github.com/login/oauth/access_token?' + `client_id=${clientID}&` + `client_secret=${clientSecret}&` + `code=${requestToken}`, headers: { accept: 'application/json' }});
client_id:客户端的 ID client_secret:客户端的密钥 code:授权码
const accessToken = tokenResponse.data.access_token;
const result = await axios({ method: 'get', url: `https://api.github.com/user`, headers: { accept: 'application/json', Authorization: `token ${accessToken}` }});
const name = result.data.name;ctx.response.redirect(`/welcome.html?name=${name}`);
使用道具 举报
本版积分规则 发表回复 回帖后跳转到最后一页
手机版|飞雪团队
GMT+8, 2024-11-24 03:01 , Processed in 0.077427 second(s), 21 queries , Gzip On.
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.