美文网首页微信微信公众号与小程序
node获取微信公众号用户信息

node获取微信公众号用户信息

作者: 沃土前端社区_子鸣 | 来源:发表于2018-03-03 10:14 被阅读0次
    前言

    个人订阅号暂不支持获取用户公众信息,首先要在公众号中配置发布的域名,这步就不详解了,node使用的是express

    步骤

    详细步骤可以查看微信官方文档说明:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
    注意:这个accesstoken跟基本的accesstoken不同,这个调取是没有数量限制的。

    前端js代码
    var wxCode = sessionStorage.getItem("wxcode") || "";
        try{
            wxCode = location.search.split("?code=")[1].split("&")[0];
            sessionStorage.setItem("wxcode",wxCode);
        }catch(e){
            wxCode = "";
        }
        var localUrl = location.href;
        //获取微信code 
        if(!wxCode){
            location.href= "https://open.weixin.qq.com/connect/oauth2/authorize?appid=appid&redirect_uri="+encodeURIComponent(localUrl)+"&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
        }else{
            $.ajax({
                url:"/wxinterface",
                type:"post",
                dataType:"json",
                jsonpCallback:'getData',
                data:{
                    code:wxCode
                },
                success:function(res){
                    console.log(res)
                    /**
                     * oppenid  用户的唯一标识
                     * nickname  用户昵称
                     * sex  用户性别,1男2女0未知
                     * province  用户资料填写的省份
                     * city  填写的城市
                     * country  填写的国家
                     * headimgurl  用户头像url
                     * privilege  用户特权信息
                     * 用户是否关注
                     */
                }
            })
        }
    

    node端路由代码

    const wxInterface = require('../modules/wxInterface');
    /**
     * 获取用户信息
     */
    router.post('/wxinterface',function(req,res,next){
        // let myUrl = req.body.url;
        let myCode = req.body.code;
        wxInterface.prototype.getUserInfo(myCode,function(data){
            if(data){
                res.json(data);
            }else{
                res.json({ "ResultCode": 0, "Message": "token获取失败" });
            }
        });
    })
    

    node端wxInterface.js代码

    var request = require('request');
    let config={
        appID:"填写自己的appid",
        appSecret:"填写自己的appsecret"
    }
    class wxInterface {
        userAccessToken(code,callback){ // 获取access_token 获取用户信息的access_token与基本的accessToken不同
            let tokenUrl = `https://api.weixin.qq.com/sns/oauth2/access_token?appid=${config.appID}&secret=${config.appSecret}&code=${code}&grant_type=authorization_code`;
            request(tokenUrl,(error, response, body)=> {
              if (response && response.statusCode && response.statusCode === 200) {
                try{
                    body = JSON.parse(body);
                }catch(e){
                    body = null;
                } 
                callback&&callback(body);
              }
            });
        };
        getUserInfo(code,callback){     //获取用户信息
            let self = this;
            self.userAccessToken(code,(data)=>{
                if(data){
                    var tokenUrl = `https://api.weixin.qq.com/sns/userinfo?access_token=${data.access_token}&openid=${data.openid}&lang=zh_CN`;
                    request(tokenUrl, function (error, response, body) {
                      if (response && response.statusCode && response.statusCode === 200) {
                        try{
                            body = JSON.parse(body);
                            body.access_token = data.access_token;
                            body.refresh_token = data.refresh_token;
                        }catch(e){
                            body = null;
                        } 
                        callback&&callback(body);
                      }
                    });
                }
            });
        }
    }
    module.exports=wxInterface;
    

    好了,打开网页,这时会提示你授权登录(PS今天我已经授权登录过了,没有截图,从网上找的一张授权图)


    image.png image.png

    我显示的是这样了,,,,,,,,,,
    登录后,就可以发现可以直接获取用户信息了


    image.png

    这就是微信开发者工具打印出来的信息

    相关文章

      网友评论

        本文标题:node获取微信公众号用户信息

        本文链接:https://www.haomeiwen.com/subject/ashtfftx.html