企业微信开发 Vue wxConfig agentConfig 授权

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];
                }
            }
        );  
}

 

企业微信开发 Vue wxConfig agentConfig 授权

上一篇:uni-app开发经验分享二十: 微信小程序 授权登录 获取详细信息 获取手机号


下一篇:微信access_token存储与更新