微信Oauth2.0

564 阅读1分钟

用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)