import Vue from 'vue';
import {
allocations
} from '@/api/configget';
import Router from '@/router'
export const wxAuth = async (pushindex, next) => {
const wechatConfigUrl = location.href.split('#')[0]
if (window.wechatConfigUrl === wechatConfigUrl && window.WWOpenData) {
if (next) {
next()
}
return Promise.resolve()
} else {
try {
await wxConfigByCorp(wechatConfigUrl, pushindex, next)
window.wechatConfigUrl = wechatConfigUrl
return Promise.resolve()
} catch (error) {
return Promise.reject(error)
}
}
}
async function wxConfigByCorp(body, pushindex, next) {
var data;
await allocations(body).then((res) => {//请求Config、agentConfig需要用到的参数
if (res.data.code == 1) {
console.log("请求配置成功")
data = res.data.data
}else{
}
}).catch(()=>{
// withoutCodeLoad()
})
const wxConfigParams = data.config
const appSignature = data.agentConfig
console.log('wxConfig?')
await Vue.prototype.$wx.config({ // 鉴权(企业的身份与权限)
beta: true,
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: wxConfigParams.appId, // 必填,企业微信的corpID
timestamp: wxConfigParams.timestamp, // 必填,生成签名的时间戳
nonceStr: wxConfigParams.nonceStr, // 必填,生成签名的随机串
signature: wxConfigParams.signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法
jsApiList: [
'shareAppMessage',
'previewFile',
'selectEnterpriseContact',
'onMenuShareAppMessage',
'invoke',
'hideOptionMenu',
'showOptionMenu'
] // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
});
await Vue.prototype.$wx.ready(function () {
console.log('wxConfig!')
console.log('wx.agentConfig?')
const u = navigator.userAgent;
const isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; // 安卓
const isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // ios终端
if (isAndroid) {
console.log('安卓手机');
Vue.prototype.$wx.invoke('agentConfig', {
corpid: appSignature.appId, // 必填,企业微信的corpid,必须与当前登录的企业一致
agentid: appSignature.agentid, // 必填,企业微信的应用id (e.g. 1000247)生产环境 写自己环境的agentid
timestamp: appSignature.timestamp, // 必填,生成签名的时间戳
nonceStr: appSignature.nonceStr, // 必填,生成签名的随机串
signature: appSignature.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法
jsApiList: [
'openUserProfile',
'previewFile'
], // 必填
}, function (res) {
console.log('result', res);
});
}
if (isIOS) {
console.log('苹果手机');
Vue.prototype.$wx.agentConfig({
corpid: appSignature.appId, // 必填,企业微信的corpid,必须与当前登录的企业一致
agentid: appSignature.agentid, // 必填,企业微信的应用id (e.g. 1000247)生产环境
timestamp: appSignature.timestamp, // 必填,生成签名的时间戳
nonceStr: appSignature.nonceStr, // 必填,生成签名的随机串
signature: appSignature.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法
jsApiList: [
'openUserProfile',
'previewFile'
], // 必填
success(res) {
console.log('agentConfig', res);
},
fail(res) {
console.log('err', res);
if (res.errMsg.indexOf('function not exist') > -1) {
alert('版本过低请升级');
}
}
});
}
if (!/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) {
console.log('pc端')
console.log(appSignature)
Vue.prototype.$wx.agentConfig({ //鉴权(应用的身份与权限)
corpid: appSignature.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致
agentid: appSignature.agentid, // 必填,企业微信的应用id (e.g. 1000247)
timestamp: appSignature.timestamp, // 必填,生成签名的时间戳
nonceStr: appSignature.nonceStr, // 必填,生成签名的随机串
signature: appSignature.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法
jsApiList: [],
success: function (res) { // 回调 // wx.agentConfig成功回调后,WWOpenData 才会注入到 window 对象上面
console.log('agentConfig!')
console.log(res)
console.log(window.WWOpenData)
if (next) {
next()
}
if (pushindex) {
Router.push({
path: '/'
})
}
},
fail: function (res) {
console.log(res)
if (res.errMsg.indexOf('function not exist') > -1) {
alert('版本过低请升级')
}
}
});
}
});
}
可以在路由拦截里执行