微信网页授权方式详解

Posted 专注前端开发

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信网页授权方式详解相关的知识,希望对你有一定的参考价值。

代码如下:

 1 var express = require(‘express‘);
 2 var cookieParser = require(‘cookie-parser‘);
 3 var bodyParser = require(‘body-parser‘);
 4 var OAuth = require(‘wechat-oauth‘);
 5 var request = require(‘request‘);
 6 var app = express();
 7 app.use(bodyParser.json());
 8 app.use(bodyParser.urlencoded({ extended: false }));
 9 app.use(cookieParser());
10 var port = 18080;
11 var appid = ‘wx75340481908402a8‘;
12 var appsecret = ‘2b6ee0cbeec0114eb539e68ba356329b‘;
13 
14 //首先拼接url
15 var  url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx75340481908402a8&redirect_uri=http%3a%2f%2fwechatapp1.duapp.com%2fcallback&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect"
16 app.get(‘/‘,function(req,res){
17     res.redirect(url);
18 });
19 //四步请求打法;
20 //第一步:获得code;
21 app.get(‘/callback‘,function(req,res){
22     var code  = req.query.code;
23     var url = ‘https://api.weixin.qq.com/sns/oauth2/access_token?appid=‘ + appid + ‘&secret=‘ + appsecret + ‘&code=‘ + code + ‘&grant_type=authorization_code‘;
24     //第二步:获得token
25     request.get(url,function(err,response,body) {
26         var json = JSON.parse(body);
27         var refreshUrl = ‘https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=‘ + appid + ‘&grant_type=refresh_token&refresh_token=‘ + json.refresh_token;
28         //第三步:获得refreshtoken和openId;
29         request.get(refreshUrl,function (err,response,refresh) {
30             var json = JSON.parse(refresh);
31             var infoUrl = ‘https://api.weixin.qq.com/sns/userinfo?access_token=‘ + json.access_token + ‘&openid=‘ + json.openid + ‘&lang=zh_CN‘;
32             //第四步:通过上一步刷新得来的refresh和openId请求用户信息;
33             request.get(infoUrl,function(err,response,info) {
34                 var info = JSON.parse(info);
35                 res.send(info);
36             });
37         });
38     });
39 });
40 
41 app.listen(port);

微信授权登录页面的设置;分两步
第一步拼接url,之后设置一个路由a,当用户点击路由a时,使用户跳转到拼接的路由;
第二步,拼接的url里面会有一个回调路由,此路由回调回来时是带着参数的;通过里面的参数通过四步请求法,可以获得用户的信息;

用户信息分两种;一种是关注公众号的;一种是没有;关注公众号的会得到用户的全部信息,没有关注的只得到openid;两种信息里面都有一个相同字段;subscrib其值为0时没有关注,为1时关注;

 

以上是关于微信网页授权方式详解的主要内容,如果未能解决你的问题,请参考以下文章

PHP微信OAuth2.0网页授权,获取用户信息代码类封装demo

vue项目登录接入企业微信的两种方式(网页授权登录,扫码授权登录)

未安装微信,审核被拒绝的解决方法,网页授权登录

公众号微信第三方登录(静默授权和非静默授权)(具体代码:U盘 新浪云SAE)

微信网页登陆区分说明

解决微信OAuth2.0网页授权回调域名只能设置一个的问题