微信网页授权方式详解

代码如下:

 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时关注;

 

微信网页授权方式详解

上一篇:微信红包API接口(PHP)


下一篇:使用delphi+intraweb进行微信开发5—准备实现微信API,先从获取AccessToken开始