企业微信开发

news2024/10/5 17:18:03

侧边栏开发

企业内应用

创建应用

在这里插入图片描述

录入必要信息

在这里插入图片描述

配置 网页授权及JS-SDK

在这里插入图片描述
需要按照提示,把认证的txt暴露出来,能够访问即可。
下图为认证成功的截图
在这里插入图片描述

配置侧边栏工具栏

在这里插入图片描述
在这里插入图片描述
录入页面名称(tab页展示名)、页面URL

配置授权可信ip

用于服务端调用获取用户身份的接口,不配置的话调用时会返回:ip不允许
在这里插入图片描述

开发过程

构造网页授权链接

下面引用的内容截取自企微文档

https://developer.work.weixin.qq.com/document/path/91022

如果企业需要在打开的网页里面携带用户的身份信息,第一步需要构造如下的链接来获取code参数
https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE&agentid=AGENTID#wechat_redirect

在这里插入图片描述

  1. appid的获取方式
    在这里插入图片描述
  2. agentid的获取方式
    在这里插入图片描述
  3. 要注意redirect_uri的地址。必须与可信域名完全一致;若访问链接URL带了端口号,端口号也需要登记到可信域名中。不能是子域名
    在这里插入图片描述
  4. 最终构造出来的网页授权链接如下示例
    https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxxxxxx&redirect_uri=你的回调地址&response_type=code&scope=snsapi_base&state=STATE&agentid=1000002#wechat_redirect
    注意:state虽然非必传,但是最好通过后端存储,在后面接口中对其进行校验
前端开发

页面很简单,就是一个按钮。
在这里插入图片描述
前端代码截图如下

xmurl 为前面构造的网页授权链接
在这里插入图片描述

  1. 当第一次进入页面时,点击按钮,通过alert可以获取当前url地址(这样做的目的,主要是因为我配置的回调地址与自定义页面的地址一样,方便我获取回调的code)

    可以看到这里就是一个根路径
    在这里插入图片描述

  2. 点击确定,进行页面跳转

  3. 跳转回来之后,根据alert可以查看到code值
    在这里插入图片描述

后端开发
获取token

https://developer.work.weixin.qq.com/document/path/91039

在这里插入图片描述

  1. corpid获取方式和前面一样
    在这里插入图片描述

  2. corpsecret获取方式
    在这里插入图片描述
    获取token

       String corpid = "corpid ";
        String corpsecret = "corpsecret";
    
        /**
         * {
         *   "errcode": 0,
         *   "errmsg": "ok",
         *   "access_token": "E6ZF9aPyr9G8GGYA2SzKTsqDjbBJ4uSWacJj1Wzn2SFkl9pPxr8Xqt8CHONERym9rmAosGhbC5SZ94WC2tenYnvvgYJKwgnT9K7ZXAqeuj7YuQS3PNnTe8H94yT2II3zhlVRuXzeWlE-5psiFSGKvnfbO61wYKNNvvv5cOlz4AoZd-eLH5eHqdhxKahes9f5rqt1921cT0G95-UG4x5Ruw",
         *   "expires_in": 7200
         * }
         */
        @Test
        public void getToken(){
            Map<String, Object> map = new HashMap<>();
            map.put("corpid", corpid);
            map.put("corpsecret", corpsecret);
            String res = HttpUtil.get("https://qyapi.weixin.qq.com/cgi-bin/gettoken", map);
            JSONObject jsonObject = JSON.parseObject(res);
            String token = jsonObject.getString("access_token");
            System.out.println(jsonObject);
        }
    
    通过token和前端回调的code,获取userInfo
    /**
         * {
         *   "errcode": 0,
         *   "errmsg": "ok",
         *   "userid": "LiDi"
         * }
         */
        @Test
        public void getUserinfo(){
            String accessToken = "E6ZF9aPyr9G8GGYA2SzKTsqDjbBJ4uSWacJj1Wzn2SFkl9pPxr8Xqt8CHONERym9rmAosGhbC5SZ94WC2tenYnvvgYJKwgnT9K7ZXAqeuj7YuQS3PNnTe8H94yT2II3zhlVRuXzeWlE-5psiFSGKvnfbO61wYKNNvvv5cOlz4AoZd-eLH5eHqdhxKahes9f5rqt1921cT0G95-UG4x5Ruw";
            Map<String, Object> map = new HashMap<>();
            map.put("access_token", accessToken);
            map.put("code", "Bx5zQfopo-OofS0ZO_Dd8z8aYC5IW8hzrv_MkUx1kBg");
            String res = HttpUtil.get("https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo", map);
            JSONObject jsonObject = JSON.parseObject(res);
            String token = jsonObject.getString("access_token");
            System.out.println(jsonObject);
        }
    

Whistle 本地调试

安装

# 安装
npm install whistle -g --registry=https://registry.npmmirror.com

# 开启 Whistle,注意以管理员身份启动 
w2 start

创建一个Rule

在这里插入图片描述

添加 Whistle 代理规则

//asdzhn.com.cn http://127.0.0.1

在这里插入图片描述

windows开启代理

在这里插入图片描述

打开https代理

在这里插入图片描述
在这里插入图片描述
将下载的证书文件,通过edge导入
在这里插入图片描述
选择如下tab页,选择导入
在这里插入图片描述

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

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

相关文章

boa交叉编译(移植到arm)

参考&#xff1a;CentOS7 boa服务器的搭建和配置-CSDN博客 以下操作在宿主机/编译平台操作&#xff1a; 1. 先执行[参考]1到3、 4.2、4.3、4.4、4.5 2. 修改MakeFile # 由以下&#xff1a; CC gcc CPP gcc -E # 改为&#xff1a; CC arm-linux-gnueabihf-gcc CPP arm-l…

019基于JavaWeb的在线音乐系统(含论文)

019基于JavaWeb的在线音乐系统&#xff08;含论文&#xff09; 开发环境&#xff1a; Jdk7(8)Tomcat7(8)MysqlIntelliJ IDEA(Eclipse) 数据库&#xff1a; MySQL 技术&#xff1a; JavaServletJqueryJavaScriptAjaxJSPBootstrap 适用于&#xff1a; 课程设计&#xff0c;毕…

Prometheus数据模型与查询语言:构建高效监控系统的关键

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Prometheus&#xff1a;监控的神》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Prometheus诞生史 二、Prometheus的数据模型与查询语…

零基础HTML教程(31)--HTML5多媒体

文章目录 1. 背景2. audio音频3. video视频4. audio与video常用属性5. 小结 1. 背景 在H5之前&#xff0c;我们要在网页上播放音频、视频&#xff0c;需要借助第三方插件。 这些插件里面最火的就是Flash了&#xff0c;使用它有几个问题&#xff1a; 首先要单独安装Flash&…

物资管理的挑战与机遇:利用技术提升效率与可持续性

引言 物资管理在企业运营中扮演着至关重要的角色。有效的物资管理不仅能够确保企业正常生产和运营所需的物资供应&#xff0c;还能够最大程度地优化资源利用、降低成本、提高效率&#xff0c;从而增强企业的竞争力和可持续发展能力。然而&#xff0c;在当今复杂的全球供应链环境…

WebSocket的原理、作用、API、常见注解和生命周期的简单介绍,附带SpringBoot示例

文章目录 原理作用客户端 API服务端 API生命周期常见注解SpringBoot示例 WebSocket是一种 通信协议 &#xff0c;它在 客户端和服务器之间建立了一个双向通信的网络连接 。WebSocket是一种基于TCP连接上进行 全双工通信 的 协议 。 WebSocket允许客户端和服务器在 单个TCP连接上…

逆数对(树状数组的方法)

本题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 题目&#xff1a; 样例&#xff1a; 输入 5 4 5 1 3 2 输出 7 思路&#xff1a; 根据题意&#xff0c;求逆序对总数。 逆序对含义&#xff1a;如果数组中的两个不同位置&#xff0c;前面的数字比后面的数字严格大&…

websocket爬虫

人群看板需求分析 先找到策略中心具体的数据。对应数据库中的数据 看看接口是否需要被逆向 点开消费者细分&#xff0c;可以找到人群包&#xff08;人群名称&#xff09; 点击查看透视 label字段分类: 在这里插入图片描述 预测年龄&#xff1a;tagTitle 苹果id&#x…

【源码】2024最新在线客服系统优化版/客服金额结算+后台翻译+可对接自己平台客户

【源码说明】 测试环境&#xff1a;宝塔、Linux系统、PHP7.2、MySQL5.6&#xff0c;根目录public&#xff0c;伪静态thinkPHP&#xff0c;【不要开启ssl&#xff0c;用http就行】 config/database.php 修改数据库信息 public/index.php 修改域名信息 cgwl_pusher/config.php …

Leetcode662_二叉树最大宽度

1.leetcode原题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 2.题目描述 给你一棵二叉树的根节点 root &#xff0c;返回树的 最大宽度 。 树的 最大宽度 是所有层中最大的 宽度 。 每一层的 宽度 被定义为该层最左和最右的非空节点&#xff08;即&#xff0…

Angular创建项目

Angular创建项目 文章目录 Angular创建项目1. 创建项目1.1 直接安装1.2 跳过npm i安装 2. 运行程序 1. 创建项目 ng new 项目名称 1.1 直接安装 ng new angulardemo --同时会安装依赖包&#xff0c;执行的命令就是npm i 1.2 跳过npm i安装 ng new angulardemo --skip-inst…

关于权限的设计

首先系统权限&#xff0c;每个账号登录后&#xff0c;都需要知道这个账号允许访问哪些api&#xff0c;哪些数据权限&#xff08;一般是指其他账号的一些数据&#xff09; 这里就需要通过角色来关联。 --1.角色绑定菜单&#xff0c;每个菜单设计的时候包含了这个菜单会用到的所…

MySql基础二之【MySql增删改查操作】

读者大大们好呀&#xff01;&#xff01;!☀️☀️☀️ &#x1f525; 欢迎来到我的博客 &#x1f440;期待大大的关注哦❗️❗️❗️ &#x1f680;欢迎收看我的主页文章➡️寻至善的主页 文章目录 前言MYSQL数据的插入操作MYSQL数据的修改操作MYSQL数据的删除操作MYSQL数据的…

【八大排序(二)】选择排序与堆排序

❣博主主页: 33的博客❣ ▶️文章专栏分类:八大排序◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多排序知识 目录 1.前言2.选择排序2.1基本思想2.2画图理解2.3单向选择排序代码实现2.4双向选择排序代码…

创建Spring Boot项目

选择Maven Archetype,之后再Archetype选择webapp 两个都打勾 这是当前的打勾 这个是以后都默认勾上 打开对应的路径&#xff0c;用vscode打开settings.xml 加入国内源 阿里云 若没有此文件可上网查找 若jar包出现问题&#xff0c;可在repostitory文件内全删除 之后在Maven刷…

小程序评分/关键词/UV优化助力小程序登顶

随着小程序市场的日益繁荣&#xff0c;小程序搜索排名优化成为了众多开发者关注的焦点。小程序搜索排名被很多因素影响着&#xff0c;关键词、评分还有uv&#xff08;授权&#xff09;等。在本文小柚和各位老板分享如何有效优化小程序搜索排名的经验。 一、关键词策略 关键词是…

《2024年绿色发展报告》:算力与电力矛盾愈加突出!

2024年4月22日&#xff0c;第55个世界地球日&#xff0c;超聚变发布《2024年绿色发展报告》&#xff0c;向社会展示超聚变面对宏观形势变化、产业趋势变化&#xff0c;推进绿色发展、科技向绿的探索与实践成果。 2023年&#xff0c;算力产业发生了深刻变化。大模型带来AI算力需…

Unity Timeline学习笔记(4) - 自定义轨道OnCreateClip和CreateTrackMixer用法上的区分

前面我们第二篇文章Unity Timeline学习笔记(2) - PlayableTrack是一个初步的PlayableTrack使用方法&#xff0c;有时候可能会个性化定制专属轨道。 OnCreateClip的例子 下面我们做一个例子&#xff1a; 首先是轨道 //FeatureTrack.cs using System.ComponentModel; using U…

【python技术】使用akshare、pandas、mplfinance绘制红绿色K线图简单示例

python中的mplfinance库是基于matplotlib库开发的一个专门用于绘制股票数据的图表的第三方库&#xff0c;它提供了一系列函数和类,用于绘制各种类型的股票图表,包括K线图、成交量图和技术指标图等。 这里简单写个示例&#xff0c;我用的mac系统&#xff0c;字体采用STHeiti。…

前端提高篇(二十四)JS进阶18对象属性的高级用法

x:1, y:2, } Object.defineProperty(obj1, ‘z’,{ value:3, writable:true, enumerable:true, configurable:true, }) for (var i in obj1){ console.log(i ’ : ’ obj1[i]); } 运行效果&#xff1a; 不可枚举时&#xff1a; var obj1 { x:1, y:2, } Obj…