接入企业微信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("请求签名有误请联系管理员")
                    }
                })
                
            })
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值