收藏
回答

js-sdk调用"shareToExternalContact"接口无权限

问题类型 API/组件名称 终端类型 微信版本 基础库版本
Bug "shareToExternalContact","shareToExternalChat" 微信iOS客户端 3.0.30 WeChat 7.0.1

问题描述:使用 js-sdk调用"shareToExternalContact","shareToExternalChat"接口时无权限

过程:

  1. 初始化wx.config wx.agentConfig,初始化正常。代码片段见👇
  2. 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 }




回答关注问题邀请回答
收藏

1 个回答

  • 企业微信运营专员-千夜
    企业微信运营专员-千夜
    2020-09-16

    您好,还需要看下agentConfig中所填agentid对应应用,需有配置客户联系功能权限,以及分享接口仅激活的成员数超过200人且已经认证的企业才可在微信上调用

    2020-09-16
    有用
    回复 8
    • ┉谭先生ゞ
      ┉谭先生ゞ
      01-11
      你好,我也遇到这个问题。所有的东西都配置了,为什么shareToExternalChat返回为false?
      01-11
      回复
    • 企业微信运营专员-千夜
      企业微信运营专员-千夜
      01-11回复┉谭先生ゞ
      看agentconfig打印的分享到客户群失败了  检查下agentconfig调用情况 还不行的话提供下企业corpid 应用agentid 和调用agentconfig接口的时间点看看
      01-11
      回复
    • ┉谭先生ゞ
      ┉谭先生ゞ
      01-11回复企业微信运营专员-千夜
      corpid:ww9f3bc9679790bf17,agentid:1000073 。 agentConfig 是在config调用之后调取的。agentConfig 返回的是ok的
      01-11
      回复
    • ┉谭先生ゞ
      ┉谭先生ゞ
      01-11
      就是调起客户群shareToExternalChat:false
      01-11
      回复
    • ┉谭先生ゞ
      ┉谭先生ゞ
      01-11
      我换了一个selectExternalContact调取,这个就可以调取成功,但是客户群的就不行,这应该说名agentconfig 没问题吧?
      01-11
      回复
    查看更多(3)
登录 后发表内容
问题标签