前端小脑虎(鸿蒙版) 2021-12-16 15:48 采纳率: 0%
浏览 1033

企业微信调用外部联系人,获取当前外部联系人userid,报(fail_no permission)错误,如何解决?

问题遇到的现象和发生背景

在调用获取当前外部联系人userid时,企微后台打印fail_no permission,好像是我 wx.agentConfig没有调用成功,但是,看了代码,参数什么的都没有错,就很奇怪?不知道怎么解决。已经卡了两天了

问题相关代码,请勿粘贴截图

<script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script>
  methods: {
    EnterpriseWeChat() {
      let that = this;
      console.log(this.appId, this.timestamp, this.nonceStr, this.signature);
      wx.config({
        beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
        debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
        appId: "ww333fa54142e953ad", // 必填,企业微信的corpID
        timestamp: "1639625115", // 必填,生成签名的时间戳
        nonceStr: "Gdf9XNLVQ3pTaO2H", // 必填,生成签名的随机串
        signature: "fad4568f686ea576e8e46ed914c465401cd20723", // 必填,签名,见 附录-JS-SDK使用权限签名算法
        jsApiList: ["getCurExternalContact"], // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
      });

      wx.error(function (res) {
        console.log(res);
        // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
      });

      wx.ready(function () {
        console.log(wx);
        console.log("注入授权");
        wx.agentConfig({
          corpid: "ww333fa54142e953ad", // 必填,企业微信的corpid,必须与当前登录的企业一致
          agentid: "(e.g. 1000017)", // 必填,企业微信的应用id (e.g. 1000247)
          timestamp: "1639625042", // 必填,生成签名的时间戳
          nonceStr: "bWQ7kLjoVO0tJtJk", // 必填,生成签名的随机串
          signature: "aff2ff84ac0d152158ae2148e3b06919de057aa4", // 必填,签名,见附录-JS-SDK使用权限签名算法
          jsApiList: ["getCurExternalContact"], //必填,传入需要使用的接口名称
          success: function (res) {
            console.log(111222);
            console.log(res);
            // 回调
          },
          fail: function (res) {
            console.log(res);
            if (res.errMsg.indexOf("function not exist") > -1) {
              alert("版本过低请升级");
            }
          },
        });

        wx.invoke("getCurExternalContact", {}, function (res) {
          console.log(222);
          console.log(res);
          if (res.errmsg == "getCurExternalContact:ok") {
            userId = res.userId; //返回当前外部联系人userId
            console.log(666);
            console.log(userId);
          } else {
            //错误处理
          }
        });
        // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
      });
    },
},
created() {
  this.EnterpriseWeChat()
}

运行结果及报错内容

errmsg: "fail_no permission"

我的解答思路和尝试过的方法

能想到都试过了 百度也找了很久,也没有办法。

我想要达到的结果

能够正常的调用当前外部联系人userid

  • 写回答

4条回答 默认 最新

  • 就这样干 2021-12-16 16:05
    关注

    看下企业微信的后台管理,有没有开启通讯录授权

    评论

报告相同问题?

问题事件

  • 创建了问题 12月16日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀