Node+express 微信授权登录

1、安装依赖

npm install express -g
npm install request --save

2、公众号参数

/* 微信授权登录参数  这个不可以复制 */
var AppID = '微信公众号APPID(测试、正式号都可以)';
var AppSecret = 'appsecret';

3、路由

router.get('/wechat_login', function(req,res, next){
    // 第一步:用户同意授权,获取code
    var router = 'get_wx_access_token';
    // 这是编码后的地址
    var return_uri = 'http%3A%2F%2Fwww.yhorizon.com%2F'+router;  
    var scope = 'snsapi_userinfo';
    res.redirect('https://open.weixin.qq.com/connect/oauth2/authorize?appid='+AppID+'&redirect_uri='+return_uri+'&response_type=code&scope='+scope+'&state=STATE#wechat_redirect');

});

router.get('/get_wx_access_token', function(req,res, next){
    // 第二步:通过code换取网页授权access_token
    var code = req.query.code;
    request.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)
                //console.log(JSON.parse(body));
                var data = JSON.parse(body);
                var access_token = data.access_token;
                var openid = data.openid;
                request.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);
                            console.log('获取微信信息成功!');
                            //其实,到这就写完了,你应该拿到微信信息以后去干该干的事情,比如对比数据库该用户有没有关联过你们的数据库,如果没有就让用户关联....等等等...
                            // 小测试,实际应用中,可以由此创建一个帐户
                            res.send("\
                                

"+userinfo.nickname+" 的个人信息

\

\

"+userinfo.city+","+userinfo.province+","+userinfo.country+"

\

openid: "+userinfo.openid+"

\ "); }else{ console.log(response.statusCode); } } ); }else{ console.log(response.statusCode); } } );

你可能感兴趣的:(Node+express 微信授权登录)