用koa实现后端代码,用了koa-router, co-wechat-oauth包
// 处理oauth
var OAuth = require('co-wechat-oauth');
var client = new OAuth('wx4dc6ee8fc9974472', '85c3c90464c3a33b5a41a21b8cdcadfd');
oauth.get('/', ctx => {
// var redirectUrl = encodeURIComponent('')
var url = client.getAuthorizeURL('http://51purse.vipgz1.idcfengye.com/oauth/callback', '9', 'snsapi_userinfo');
// 也可以前端window.location.href = url, 就是询问你是否授权登录
ctx.redirect(url)
})
// 同意授权后会有code
// 确认后进入http://51purse.vipgz1.idcfengye.com/oauth/callback?code=code
oauth.get('/callback', async (ctx) => {
let code = ctx.query.code
var token = await client.getAccessToken(code);
var accessToken = token.data.access_token;
var openid = token.data.openid;
console.log(accessToken, openid)
var userInfo = await client.getUser(openid);
ctx.body = userInfo
})
微信授权
微信授权有2中,一种是静默授权,一种是显性授权
用户同意授权,获取code
如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。
第二步:通过code换取网页授权access_token和openid
第三步:刷新access_token(如果需要)
第四步:拉取用户信息, 用access_token + openid (需scope为 snsapi_userinfo)