Open zp1112 opened 6 years ago
微信授权分为四大步骤
前端获取。用户进入A站, 一、redrect到授权页,带上回调页面A,用户点击允许授权 二、回到A页面,带上获取到的code 三、使用code请求获取accesstoken和openid 四、使用accesstoken和openid获取用户信息
后端获取。用户进入A站,请求login接口 一、login接口redrect到授权页,回调接口getAccesstoken,允许授权 二、回到getAccesstoken接口,带上获取到的code 三、使用code请求获取accesstoken和openid 四、使用accesstoken和openid获取用户信息 五、种下cookie,返回到页面A
// auth.js var req = require('request'); /* 微信登陆 */ var AppID = 'xxx'; var AppSecret = 'xxxxxx'; module.exports = [{ method: 'GET', path: '/wx_login', handler: async (request, h) => { // 第一步:用户同意授权,获取code var router = 'get_wx_access_token'; // 这是编码后的地址 var return_uri = 'http%3A%2F%2Fwww.test.com%2F'+router; var scope = 'snsapi_userinfo'; // 授权页,回调地址get_wx_access_token return h.redirect('https://open.weixin.qq.com/connect/oauth2/authorize?appid='+AppID+'&redirect_uri='+return_uri+'&response_type=code&scope='+scope+'&state=STATE#wechat_redirect'); } }, { method: 'GET', path: '/get_wx_access_token', handler: async (request, h) => { // 第二步:通过code换取网页授权access_token var code = request.query.code; req.get( { url:'https://api.weixin.qq.com/sns/oauth2/access_token?appid='+AppID+'&secret='+AppSecret+'&code='+code+'&grant_type=authorization_code', }, function(error, response, body){ if(response.statusCode == 200){ // 第三步:拉取用户信息(需scope为 snsapi_userinfo) var data = JSON.parse(body); var access_token = data.access_token; var openid = data.openid; req.get( { url:'https://api.weixin.qq.com/sns/userinfo?access_token='+access_token+'&openid='+openid+'&lang=zh_CN', }, function(error, response, body){ if(response.statusCode == 200){ // 第四步:根据获取的用户信息进行对应操作 var userinfo = JSON.parse(body); // 可以由此创建一个帐户 h.response(userinfo.nickname) }else{ console.log(response.statusCode); } } ); }else{ console.log(response.statusCode); } } ); } }];
微信授权分为四大步骤
前端获取。用户进入A站, 一、redrect到授权页,带上回调页面A,用户点击允许授权 二、回到A页面,带上获取到的code 三、使用code请求获取accesstoken和openid 四、使用accesstoken和openid获取用户信息
后端获取。用户进入A站,请求login接口 一、login接口redrect到授权页,回调接口getAccesstoken,允许授权 二、回到getAccesstoken接口,带上获取到的code 三、使用code请求获取accesstoken和openid 四、使用accesstoken和openid获取用户信息 五、种下cookie,返回到页面A