接入企业微信sdk 获取签名

接入企业微信sdk 获取签名记录一下我踩过的2个坑:所传的url用来生成签名的一定必须要是未编码的(我是前端,签名后端来生成我把url传给后端会自动编码,这时候需要后端来转一次码,这样生成的签名才可以,我是vuehash模式用window.location.href.split(‘#’)[0])时间戳一定要精确到秒到秒Date.parse(newDate())/1000;我的心得就是,因为我这次获取的签名是后端来生成,前端只要保证config里面写对!那你就没错!你没错!错的是后端!哈哈哈哈我遇到的问题

大家好,欢迎来到IT知识分享网。接入企业微信sdk

记录一下我踩过的2个坑:

  1. 所传的url用来生成签名的一定必须要是未编码的(我是前端,签名后端来生成我把url传给后端会自动编码,这时候需要后端来转一次码,这样生成的签名才可以,我是vue hash模式 用window.location.href.split('#')[0])
  2. 时间戳一定要精确到秒 到秒 Date.parse(new Date()) / 1000;

我的心得就是,因为我这次获取的签名是后端来生成,
前端只要保证config里面写对! 那你就没错!你没错!错的是后端! 哈哈哈哈
我遇到的问题更多的是签名错误, 传送门去官网自查问题.
企业微信sdk报错问题自查传送门


export default { 
   
    data () { 
   
        return { 
   
            
        }
    },
    methods: { 
   
        // 获取随机字符串
        randomString(len) { 
   
            var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';    /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/
            var maxPos = $chars.length;
            var pwd = '';

            len = len || 32;
            for (var i = 0; i < len; i++) { 
   
              pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
            }
            return pwd;
        },
        // 获取签名
        getSign(){ 
   
            return new Promise((resolve, reject)=>{ 
   
                // 获取时间戳 url 和随机字符串
                let nonceStr = this.randomString(17);
                let timestamp = Date.parse(new Date()) / 1000;
                let url = window.location.href.split('#')[0]
                let params = { 
   
                    "nonceStr": nonceStr,                // 随机串
                    "timestamp": timestamp,              // 时间戳
                    "url": `${ 
     encodeURIComponent(url)}`, // 请求url
                    "isEnterprise":true                  // true是企业级 false是应用级
                };
                this.$get(`XXXXXXXXXX`, params, function(res){ 
   
                    if(res){ 
   
                        let signature=res
                        wx.config({ 
   
                            beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
                            debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                            appId: 'XXXXXXXXXX', // 必填,企业微信的corpID
                            timestamp: timestamp, // 必填,生成签名的时间戳
                            nonceStr: nonceStr, // 必填,生成签名的随机串
                            signature: signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法
                            jsApiList: ['openDefaultBrowser'] // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
                        });
                
                        wx.ready(function() { 
   
                            resolve(wx);
                        })
                        wx.error(res => { 
   
                            reject(res);
                        })
                    }else{ 
   
                        Vue.msg("请求签名有误请联系管理员")
                    }
                })
                
            })
        }
    }
}

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/15801.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信