问题描述:使用 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 }
您好,还需要看下agentConfig中所填agentid对应应用,需有配置客户联系功能权限,以及分享接口仅激活的成员数超过200人且已经认证的企业才可在微信上调用
对应的应用需要在这里配置上权限
你好。请问最后怎么解决呢?我也遇到同样问题
你好。请问最后怎么解决呢?我也遇到同样问题