对应的应用需要在这里配置上权限 [图片]
js-sdk调用"shareToExternalContact"接口无权限问题描述:使用 js-sdk调用"shareToExternalContact","shareToExternalChat"接口时无权限 过程: 初始化wx.config wx.agentConfig,初始化正常。代码片段见👇checkResult中以上接口的返回值是false, 如下图[图片] 3. 已经为当前用户开启了"客户联系和客户群"权限 [图片] 4. 已经安装文档中的说明检查过 [图片] 其中:1. config正确通过; 2. wx.invoke()无需写在wx.ready()中;3.确认config的jsApiList中包含了该接口(代码片段见👇) 其他补充:其他接口的checkResult返回值为true,只有这两个接口false。 以下代码为初始化wx.Config, wx.agentConfig的代码片段。👇 import { signCorpJsSdk, signAppJsSdk } from '../api/wxWork' const CORP_INFO_KEY = 'wxworkCorpInfo' const APP_CODE = 'aaa' // FIXME, 从配置获取 const config = { beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题 debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: '', // 必填,企业微信的corpID timestamp: 0, // 必填,生成签名的时间戳 nonceStr: '', // 必填,生成签名的随机串 signature: '', // 必填,签名,见 附录-JS-SDK使用权限签名算法 jsApiList: ['onMenuShareAppMessage', 'onMenuShareWechat', 'onMenuShareTimeline', 'shareAppMessage', 'shareWechatMessage', 'shareToExternalContact', 'shareToExternalChat'] // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来 } const agentConfig = { corpid: '', // 必填,企业微信的corpid,必须与当前登录的企业一致 agentid: '', // 必填,企业微信的应用id (e.g. 1000247) timestamp: 0, // 必填,生成签名的时间戳 nonceStr: '', // 必填,生成签名的随机串 signature: '', // 必填,签名,见附录-JS-SDK使用权限签名算法 jsApiList: ['onMenuShareAppMessage', 'onMenuShareWechat', 'onMenuShareTimeline', 'shareAppMessage', 'shareWechatMessage', 'shareToExternalContact', 'shareToExternalChat'], // 必填 success: function (res) { console.error('回调成功') }, fail: function (res) { if (res.errMsg.indexOf('function not exist') > -1) { console.error('版本过低请升级') } } } /** * 初始化企业微信config */ function initWxConfig(onReady = (res) => {console.log(res)}, onError = (e) => {console.error(e)}) { const url = window.location.href.split('#')[0] const { corpId: authCorpId } = JSON.parse(localStorage.getItem(CORP_INFO_KEY)) const query = { eqsCode: APP_CODE, authCorpId, url } signCorpJsSdk(query).then(res => { console.log('corp jsapi ticket', res.data) const { timestamp, nonceStr, signature } = res.data const wxConfig = Object.assign({}, config, { appId: authCorpId, timestamp, nonceStr, signature }) wx.config(wxConfig) wx.ready(() => { console.log('wx config on ready') onReady() this.initWxAgentConfig() }) wx.error(onError) }, err => {console.log(err)}); } /** * 初始化企业微信agent config */ function initWxAgentConfig(onSuccess = (res) => {console.log(res)}, onFail = (e) => {console.error(e)}) { const url = window.location.href.split('#')[0] const { corpId: authCorpId } = JSON.parse(localStorage.getItem(CORP_INFO_KEY)) const query = { eqsCode: APP_CODE, authCorpId, url } signAppJsSdk(query).then(res => { console.log('app jsapi ticket', res.data) const { timestamp, nonceStr, signature, agentId: agentid } = res.data const wxAgentConfig = Object.assign({}, agentConfig, { corpid: authCorpId, agentid, timestamp, nonceStr, signature, success: onSuccess, fail: onFail }) return wx.agentConfig(wxAgentConfig) }) } const wxWorkUtil = { initWxConfig, initWxAgentConfig } export { wxWorkUtil }
2022-02-11