1.官網地址:https://work.weixin.qq.com/api/doc/90000/90136/90497
2.下載好文件,在main.js中引入文件。
import '@/assets/js/weinxin/weixin-js-sdk-1.6.0.js'; // 微信sdk import '@/assets/js/weinxin/jwxwork-1.0.0.js';
Vue.prototype.$wx = (window as any).wx; // 全局使用
3.路由
import { wxAuth } from '@/utils/wx-auth'; // 授權文件,見步驟4 routers.afterEach((to: any, from: any) => { wxAuth(to); });
4.授權的js文件,例如wx-auth.ts。內容如下:
import network from '@/network'; // 這個是自己項目里的網絡層,用於調用接口 import Vue from 'vue'; const wxAuth = async (to?: any) => { const tempUrl = window.location.protocol + '//' + window.location.host + '/nwd-enterprise-wechat' + to.fullPath; const urlNow = encodeURIComponent(tempUrl); console.log('當前授權URL:', urlNow); const noncestr = Math.floor(Math.random() * 100000000000000); const body = { url: urlNow, timestamp: (new Date() as any) - 0, nonceStr: noncestr }; const wxConfigParams = await network.common.getWxConfigParams(body); // 通過接口,獲取wxConfig的參數 const appSignature = await network.common.getAppSignature(body); // 通過接口,獲取agentConfig的參數 Vue.prototype.$wx.config({ beta: true, // 必須這么寫,否則wx.invoke調用形式的jsapi會有問題 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接口列表,凡是要調用的接口都需要傳進來 }); Vue.prototype.$wx.ready(function() { console.log('wx.agentConfig:BEGIN');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: '10086', // 必填,企業微信的應用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: '10086', // 必填,企業微信的應用id (e.g. 1000247)生產環境 timestamp: appSignature.timestamp, // 必填,生成簽名的時間戳 nonceStr: appSignature.nonceStr, // 必填,生成簽名的隨機串 signature: appSignature.signature, // 必填,簽名,見附錄-JS-SDK使用權限簽名算法 jsApiList: [ 'openUserProfile', 'previewFile' ], // 必填 success(res: any) { console.log('agentConfig', res); }, fail(res: any) { console.log('err', res); if (res.errMsg.indexOf('function not exist') > -1) { alert('版本過低請升級'); } } }); } }); }; export { wxAuth, };
5.頁面中使用api
// 選人 selectUser() { // 企業微信環境: const that = this; Vue.prototype.$wx.invoke( 'selectEnterpriseContact', { fromDepartmentId: 0, // 必填,表示打開的通訊錄從指定的部門開始展示,-1表示自己所在部門開始, 0表示從最上層開始 mode: 'single', // 必填,選擇模式,single表示單選,multi表示多選 type: ['user'], // 必填,選擇限制類型,指定department、user中的一個或者多個 selectedDepartmentIds: [], // 非必填,已選部門ID列表。用於多次選人時可重入,single模式下請勿填入多個id selectedUserIds: [] // 已選成員的ID }, function(res) { if (res.err_msg == 'selectEnterpriseContact:ok') { const userInfo = res.result.userList[0]; } } ); }