企业微信自建小程序应用踩坑实践

news2024/12/26 23:23:11

最近开发了一个小程序接入企业微信的需求,企业微信的权限限制诸多,网上的完整示例又少之又少,因此踩了比较多坑,与大家分享。

开发调试

在开发者工具中如果直接使用微信小程序模式,调用wx.qy接口会提示不存在,需要安装企业微信小程序模拟器插件

1. 添加企业微信模拟器插件

image.png

2. 切换企业微信小程序模式

image.png

注意:某些api模拟器也不支持,需要真机调试

3. 打开多场景调试

用企业微信扫小程序开发码,开启多场景调试。开启之后,在附件栏、工具栏、会话、工作台等场景打开此小程序时,都将使用本次扫码的开发版小程序来运行。

image.png

这个功能很好的解决了从其他入口无法进入开发版的问题,但开发调试的过程还是比较麻烦的

企业微信端小程序登录流程和微信端小程序登录不同

一开始是想调用wx.qy.selectExternalContact获取外部联系人信息,本以为有现成的api可以解决很简单,但直接调用一直调不通,提示session过期,才看到这个api的调用前提:

调用前提:
必须先调用过wx.qy.login,且session_key未过期,开发者可调用checkSession 检查当前登录态
当前成员必须在应用的可见范围

wx.qy.loginwx.login的用法类似,但企微端的登录和微信端的登录是两套不通的流程

  • 微信端小程序登录
    image.png
  • 企微端小程序登录

image.png

注:

  • 企业微信端也是支持wx.login的,如只需使用wx.xx(微信端api)不需要走企业微信登录。
  • 如需获取到当前企业微信用户在当前企业的员工身份信息、联系人信息等企业微信相关用户信息,则必须走企业微信登录流程。

access_token必须是与小程序关联的企业微信应用secret所获得

在调用jscode2session接口走登录流程的时候,一直提示没有权限,看了下接口的权限说明:

权限说明:
access_token必须是与小程序关联的企业微信应用secret所获得。

如果没有开发过企业微信应用,可能会对这句话费解,这个概念如果没有从头看起很容易混淆。

一开始用的是企业微信本身的secrect不行,后来在论坛上查询相关帖子说是要用小程序的secrect,但要注意这里指的secrect并不是小程序本身的AppSecrect,而是在企业微信后台创建的关联了小程序的应用的secrect,可以在企业微信后台应用管理中点击查看,发送Secret到企业微信中查看。

secret是企业应用里面用于保障数据安全的“钥匙”,每一个应用都有一个独立的访问密钥。分为以下几种:

  • 自建应用secret
  • 基础应用secret
  • 通讯录管理secret
  • 外部联系人管理secret

建议开发前先阅读文档了解清楚这些基本概念

API权限

如果在调用客户管理相关API提示没有权限的话,先来看一下接口的权限说明:

权限说明:

  • 企业需要使用客户联系secret或配置到可调用应用列表中的自建应用secret所获取的accesstoken来调用
  • 第三方应用需具有“企业客户权限->客户基础信息”权限
  • 第三方/自建应用只能获取到可见范围内的配置了客户联系功能的成员。

可以从以下方面排查:

1. 获取accesstoken的secrect有没有用对

  • 一种方法是可以直接使用客户联系secrect:

image.png

  • 如果使用的是自建应用的secrect,还需要把当前应用配置到客户联系可调用列表:

image.png

2. 获取客户联系的成员是否配置应用可见范围

image.png

3. 是否配置了客户联系功能权限:

image.png

可以感受到企业微信为了保护客户的隐私信息,做了很多的权限控制,有一套完善的权限体系
  • 应用可见范围

image.png

  • 应用调用 OpenApi 权限

大致的调用流程如下图所示:

image.png

企业可信ip

当已经用正确的secrect获取到accesstoken后,调用接口又提示了报错:

{
    "errcode": 60020,
    "errmsg": "not allow to access from your ip, hint: [xxx], from ip: xx.xx.xx.xx,...
}

需要在企业微信后台配置应用的可信ip,只有配置了可信ip,才能够调到企业微信的接口。

而在配置企业可信ip前,必须要先设置可信域名设置接受消息服务器URL (即使你并不需要用到…)

image.png

设置可信域名需完成域名归属认证 ,即在域名根目录上传小程序校验文件

image.png
配置完可信ip之后,终于能调通了。

总结

  1. 开始企业微信开发前先阅读官方文档开发指南,了解清楚基本概念、开发流程、配置方法,也便于后续阅读接口文档相关术语的理解。
  2. 开发者工具需安装企微插件用于调试部分企微api,对于工具无法模拟的场景需要真机开启多场景调试。
  3. 调用企业微信相关接口前,需仔细阅读接口的调用前提和权限说明。
  4. 调用openApi时,需要走企业微信内小程序登录流程、配置相关权限、配置企业可信ip。
  5. 不知道为啥接口调用失败可以使用错误码查询工具,在接口请求url里加上debug=1参数之后从接口返回的errmsg复制出hint值查询。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1036201.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt5开发及实例V2.0-第二十一章-Qt.Quick Controls开发基础

Qt5开发及实例V2.0-第二十一章-Qt.Quick Controls开发基础 第21章 Qt Quick Controls开发基础21.1 Qt Quick Controls概述21.1.1 第一个Qt Quick Controls程序21.1.2 Qt Quick窗体应用程序的构成 21.2 Qt Quick控件21.2.1 概述21.2.2 基本控件21.2.3 高级控件21.2.4 样式定制 2…

光电开关-NPN-PNP

基础概念 有信号 “检测到物体/有物体遮挡” 工作原理 NPN:表示共正电压,输出负电压【只能输出低电压或者悬空 常开常闭是指 输出有没有跟“地”接通】; NPN NO:表示常态下是常开的,检测到物体时黑色线输出一个负电压…

docker jira 一键安装含PJ(docker 一键安装jira)

docker jira 一键安装含PJ(docker 一键安装jira) 本文仅供参考学习,请勿用于商业用途本文用于Jira在Docker的安装,仅用于记录安装方式转载请注明来源Linux安装可参考链接Windows安装可查考链接Docker一键安装Confluence PJ条件允…

配置HBase和zookeeper

一、上传文件 二、解压 tar -zxf ./zookeeper-3.4.5-cdh5.14.2.tar.gz -C /opt/soft/ tar -zxf ./hbase-2.3.5-bin.tar.gz -C ../soft/ 三、改名字 mv ./zookeeper-3.4.5-cdh5.14.2/ zk345 mv ./hbase-2.3.5/ hbase235 四、配置映射 vim /etc/profile#ZK export ZOOKEEPE…

pytorch学习------实现手写数字识别

目录 目标一、思路和流程分析二、准备训练集和测试集2.1、图形数据处理方法2.1.1、torchvision.transforms.ToTensor2.1.2、torchvision.transforms.Normalize(mean, std)2.1.3、torchvision.transforms.Compose(transforms) 2.2、准备MNIST数据集的Dataset和DataLoader三、构建…

NodeRed拖拉拽实现OPCUA数据订阅,发布至MQTT并落库MySQL

背景 几年前曾根据 Node-Red 官网示例进行了简单的体验,当时觉得这东西就是个玩具,拿过来玩一玩可以,不实用;但是如今发现有不少产品对其进行了集成,并做出了复杂的商业应用,这确实是极大的震撼。 使用看似…

Vulnhub系列靶机---JANGOW 1.0.1

文章目录 网卡配置信息收集主机发现端口扫描 漏洞利用反弹Shell提权 靶机文档:JANGOW 1.0.1 下载地址:Download (Mirror) 难易程度:. 网卡配置 水果味儿 信息收集 主机发现 端口扫描 访问80端口 点击site目录 点击页面上方的一个选项&…

【跟小嘉学习区块链】一、区块链基础知识与关键技术解析

系列文章目录 【跟小嘉学习区块链】一、区块链基础知识与关键技术解析 文章目录 系列文章目录[TOC](文章目录) 前言一、区块链基础1.1、区块链的来龙去脉1.1.1、区块链技术起源1.1.2、核心技术发展脉络 1.2、比特币产生的背景与现状1.2.1、现行货币体系存在的问题1.2.2、数字货…

HTTP代理与VPN:网络代理技术的比较

HTTP代理和VPN是两种常见的网络代理技术,它们可以帮助用户隐藏自己的IP地址、保护网络隐私、绕过网络限制等。本文将介绍HTTP代理和VPN的定义、工作原理、优缺点以及使用场景。 一、HTTP代理 HTTP代理是一种通过代理服务器转发网络请求的技术。当用户发起网络请求时…

c语言进阶部分详解(经典回调函数qsort()详解及模拟实现)

大家好!上篇文章(c语言进阶部分详解(指针进阶2)_总之就是非常唔姆的博客-CSDN博客)我已经对回调函数进行了初步的讲解和一个简单的使用事例,鉴于篇幅有限没有进行更加详细的解释,今天便来补上。…

echarts的Y轴设置为整数

场景:使用echarts,设置Y轴为整数。通过判断Y轴的数值为整数才显示即可 yAxis: [{name: ,type: value,min: 0, // 最小值// max: 200, // 最大值// splitNumber: 5, // 坐标轴的分割段数// interval: 100 / 5, // 强制设置坐标轴分割间隔度(取本Y轴的最大…

【算法与数据结构】JavaScript实现十大排序算法(二)

文章目录 关于排序算法快速排序堆排序计数排序桶排序基数排序 关于排序算法 稳定排序: 在排序过程中具有相同键值的元素,在排序之后仍然保持相对的原始顺序。意思就是说,现在有两个元素a和b,a排在b的前面,且ab&#xf…

Windows使用JEnv实现JDK多版本管理

Windows使用JEnv实现JDK多版本管理 JEnv安装Jenv命令 JEnv安装 JEnv是一个帮助我们管理多个JDK安装的工具,并将每个代码库配置为使用特定的JDK版本,而不必改变JAVA_HOME环境变量. 下载链接 windows版 windows版地址JEnvGithub地址: JEnv Jenv命令 添…

如何查看电脑详细配置、型号?这4个技巧 yyds!

知道自己电脑的配置和型号,可以更合理合适的去安装软件,避免出现电脑系统和软件不兼容问题。 了解详细配置信息可以检测一下电脑组件是否是二手的。 从解决实际问题的角度,推荐这4个技巧: 1、右键“此电脑” 2、设备管理器查看…

AJAX的奇妙之旅(1)基础知识

一、简介 AJAX(Asynchronous JavaScript and XML)是一种使用现有标准的新方法。它是一种用于创建快速动态网页的技术。AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。AJAX 不需要任何浏览器插件&a…

【操作系统笔记一】程序运行机制CPU指令集

内存地址 指针 / 引用 指针、引用本质上就是内存地址,有了内存地址就可以操作对应的内存数据了。 不同的数据类型 字节序 大端序(Big Endian):字节顺序从低地址到高地址顺序存储的字节序小端序(Little Endian&#…

stm32之智能垃圾桶实战

之前用过51做过一个垃圾桶的小项目,这里用32重新搞了一下。视频的效果和之前一样,可参考这个垃圾桶效果 。 一、项目描述(同51) 项目主要是模拟不用手动打开垃圾桶盖,而进行自动操作。自动打开的条件如下&#xff1a…

基于微信小程序的学生选课系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言学生小程序端的主要功能有:教师的主要功能有:管理员的主要功能有:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 &#x1f4…

PHP自动识别采集何意网址文章正文内容

在做PHP采集内容时,用过querylist采集组件,但是这个插件采集页面内容时,都必须要写个采集选择器。这样比较麻烦,每个文章页面都必须指定一条采集规则 。就开始着手找一个插件可以能自动识别任意文章url正文内容并采集的&#xff0…

完整答题小程序源码/支持流量主/激励广告强点(答题小程序模板+题库)

源码简介: 完整答题小程序源码/支持流量主/激励广告强点(答题小程序模板题库),完整答题小程序源码有题库,无加密,带激励广告强制点击可提升广告收益。是积分激励的小程序,作为答题小程序开发,是很实用的操…