Node+express 微信授权登录

其实,在看这个之前,你更应该先看看oauth,如果你急于求成、赶着解决问题,那么你可以先看这个,甚至直接复制代码过去先用,当然你也应该知道,这样只会害了你自己,并不能影响到任何人。
毕竟抄袭了,所以还是先感谢一下@Mike的读书季
前期准备:
一台外网服务器(vps、虚拟空间都行),已备案域名(记得备案),没有域名怎么办?凉拌,没有备案域名你可以玩一下测试号(申请微信测试号的微信号必须实名认证)!
环境要求:
如题,node+express,配置node就不写了,我也懒得复制了,express?
我也懒得复制了,http://www.expressjs.com.cn/ 官网地址,自己去看

如果你还搞不清服务号、订阅号的区别,麻烦去看下介绍,或者百度、知乎、、sf.gg等网站去看看大神怎么解释的...
微信测试号申请:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

有一个很重要,那就是授权回调域名,在网页服务-网页张账号-点击修改,填写你的域名(不带http或者https哦);

还是贴点代码吧!
首先你需要安装这些,可以复制我的

npm install express -g
npm install request --save

···此处省略了很多代码及步骤···
安装完成以后,我们就开始写代码了。
首先我们需要参数

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

添加路由(这个可以复制)

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); } } );

到这就写完了,那我们测试一下试试咯,访问地址:www.yhorizon.com/wechat_login,然后就能看见结果了!!!请不要访问本文中的这个地址,因为根本不能访问,上线域名并不是这个哈!!

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