大家好,欢迎来到IT知识分享网。
记录一下我踩过的2个坑:
- 所传的url用来生成签名的一定必须要是未编码的(我是前端,签名后端来生成我把url传给后端会自动编码,这时候需要后端来转一次码,这样生成的签名才可以,我是vue hash模式 用
window.location.href.split('#')[0]
) - 时间戳一定要精确到秒 到秒
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