企业微信_获取access_token

在这里插入图片描述

文章目录

          • 一、快速入门
            • 1. 开发文档
            • 2. 管控台
            • 3. 接口文档
            • 4. 参数获取
            • 5. api调试
          • 二、java实战
            • 2.1. 入口
            • 2.2. 核心方法
            • 2.3. 核心配置
            • 2.3. RestUtils 工具类
            • 2.5. token缓存策略
          • 三、源码分享
            • 3.1. 后端源码
            • 3.2. 前端源码

一、快速入门
1. 开发文档

企业内部开发文档:
https://developer.work.weixin.qq.com/document/path/91039

2. 管控台

企业微信管控台:
https://work.weixin.qq.com/wework_admin/frame#apps

3. 接口文档

获取access_token接口文档
在这里插入图片描述

4. 参数获取

corpid->获取企业ID
在这里插入图片描述
corpsecret->应用secret
在这里插入图片描述
在这里插入图片描述

5. api调试
  • postman调试
    在这里插入图片描述
  • 官网调试
    https://developer.work.weixin.qq.com/resource/devtool
    在这里插入图片描述
二、java实战
2.1. 入口
  // 1.通过corpId获取AccessTokenString accessToken = getAccessToken(corpId);
2.2. 核心方法
 /*** 通过corpId获取AccessToken** @param corpId 企业ID* @return*/public String getAccessToken(String corpId) {String result = "";String accessTokenUrl = String.format(QywxInnerConfig.ACCESS_TOKEN_URL, corpId, AGENT_SECRET);Map response = RestUtils.get(accessTokenUrl);//获取错误日志if (response.containsKey("errcode") && (Integer) response.get("errcode") != 0) {logger.error(response.toString());} else {result = (String) response.get("access_token");}return result;}
2.3. 核心配置
package com.gblfy.qywxin.config;/*** 企业微信常量配置类** @author gblfy* @date 2022-01-12*/
public class QywxInnerConfig {public static final String BASE_URL = "https://qyapi.weixin.qq.com/cgi-bin/";//获取access_token//https://open.work.weixin.qq.com/api/doc/90000/90135/91039public static final String ACCESS_TOKEN_URL = BASE_URL + "gettoken?corpid=%s&corpsecret=%s";
}
 @Value("${qywx.agentSecret}")private String AGENT_SECRET;
2.3. RestUtils 工具类
package com.gblfy.qywxin.utils;import com.alibaba.fastjson.JSONObject;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.*;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;import java.io.IOException;
import java.net.URI;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Map;
import java.util.Objects;@Configuration
public class RestUtils {private static final RestTemplate restTemplate = new RestTemplate();public static JSONObject get(String url, Map<String,String> urlParams){return get(urlToUri(url,urlParams));}//在处理企业微信某些参数时有问题public static JSONObject get(String url){return get(URI.create(url));}private static JSONObject get(URI uri){ResponseEntity<JSONObject> responseEntity =restTemplate.getForEntity(uri,JSONObject.class);serverIsRight(responseEntity);   //判断服务器返回状态码return responseEntity.getBody();}public static JSONObject post(String url,Map<String,String> urlParams,JSONObject json){//组装urlreturn post(urlToUri(url,urlParams),json);}public static JSONObject post(String url,JSONObject json){//组装urLreturn post(URI.create(url),json);}private static JSONObject post(URI uri,JSONObject json){//组装url//设置提交json格式数据HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON);HttpEntity<JSONObject> request = new HttpEntity(json, headers);ResponseEntity<JSONObject> responseEntity = restTemplate.postForEntity(uri,request,JSONObject.class);serverIsRight(responseEntity);  //判断服务器返回状态码return responseEntity.getBody();}private static URI urlToUri(String url,Map<String,String> urlParams){//设置提交json格式数据UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(url);for(Map.Entry<String,String> entry : urlParams.entrySet())  {uriBuilder.queryParam((String)entry.getKey(),  (String) entry.getValue()) ;}return  uriBuilder.build(true).toUri();}public static JSONObject upload(String url,MultiValueMap formParams){//设置表单提交HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.MULTIPART_FORM_DATA);HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(formParams, headers);ResponseEntity<JSONObject> responseEntity = restTemplate.postForEntity(url,request,JSONObject.class);serverIsRight(responseEntity);  //判断服务器返回状态码return responseEntity.getBody();}public static String download(String url,String targetPath) throws IOException {ResponseEntity<byte[]> rsp = restTemplate.getForEntity(url, byte[].class);if(rsp.getStatusCode() != HttpStatus.OK){System.out.println("文件下载请求结果状态码:" + rsp.getStatusCode());}// 将下载下来的文件内容保存到本地Files.write(Paths.get(targetPath), Objects.requireNonNull(rsp.getBody()));return targetPath;}public static byte[] dowload(String url){ResponseEntity<byte[]> rsp = restTemplate.getForEntity(url, byte[].class);return rsp.getBody();}private static void serverIsRight(ResponseEntity responseEntity){if(responseEntity.getStatusCodeValue()==200){
//            System.out.println("服务器请求成功:{}"+responseEntity.getStatusCodeValue());}else {System.out.println("服务器请求异常:{}"+responseEntity.getStatusCodeValue());}}
}
2.5. token缓存策略

建议使用redis,说一下具体实现流程:

  • 1.获取token,根据token_key 查询redis中是否存在
  • 2.如果存在,就获取token直接用
  • 3.如果不存在,则通过企业ID获取token存储redis过期时间设置为2小时
三、源码分享
3.1. 后端源码

后端:https://gitee.com/gblfy/qywx-inner-java

3.2. 前端源码

前端:https://gitee.com/gblfy/qywx-vuejs

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

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

相关文章

映客上云 助力《疫战到底》系列课程吸引数千万用户观看

云栖号案例库&#xff1a;【点击查看更多上云案例】 不知道怎么上云&#xff1f;看云栖号案例库&#xff0c;了解不同行业不同发展阶段的上云方案&#xff0c;助力你上云决策&#xff01; 公司介绍 北京蜜莱坞网络科技有限公司旗下的映客直播是中国领先的移动端直播平台&#…

荷兰政府用大数据预测天气预防自然灾害,他们是怎么做的?

作者 | 乔治娜乌斯蒂克翻译 | Katie责编 | 晋兆雨头图 | CSDN付费下载于视觉中国你是否对天气预报电视报道的背后的运作感到好奇&#xff1f;是谁在管理政府卫星&#xff1f;也许你会思考关于传感器的一个问题——数据会流向何处&#xff1f; 在荷兰&#xff0c;这些数据是由KN…

Excel VBA Sql 操作Access数据库

目录 1. 文件创建2. 数据库连接2.1 前期和后期绑定2.2 通过判断 Excel 的不同版本,给出不同的连接字符串2.3 Excel 自连接3. 应用:增、删、改3.1 增加数据的语法3.2 删除数据的语法3.3 修改数据的语法4. 结语1. 文件创建 首先,我们需要在预先设置的路径下新建Excel工作簿。…

比邻东方上云 从零开始完成压测和监控高可用体系建设

云栖号案例库&#xff1a;【点击查看更多上云案例】 不知道怎么上云&#xff1f;看云栖号案例库&#xff0c;了解不同行业不同发展阶段的上云方案&#xff0c;助力你上云决策&#xff01; 公司介绍 新东方教育科技集团&#xff0c;由1993年11月16日成立的北京新东方学校发展壮…

企业微信小程序_小程序开发工具及真机调试_host配置及代理

文章目录一、开发前准备1. 开发文档2. 工具安装3. 安装插件4. 调整编译模式5. 选择企业6. PC 调试前端7. PC 调试后端二、甄姬调试前端2.1. 预览小程序2.2. 手机企微扫码2.3. 手机企微调试2.4. 多场景调试2.5. 手机企微调试前后端一、开发前准备 1. 开发文档 小程序开发文档&…

VIPKID上云 解决多云Web统一安全防护问题

云栖号案例库&#xff1a;【点击查看更多上云案例】 不知道怎么上云&#xff1f;看云栖号案例库&#xff0c;了解不同行业不同发展阶段的上云方案&#xff0c;助力你上云决策&#xff01; 公司介绍 VIPKID是全球增长速度最快的在线青少儿英语教育品牌&#xff0c;纯北美外教1对…

别再盲目学Python了!

如果你想问最近这些年什么编程语言最值得学习&#xff0c;我会毫不犹豫的告诉你是Python。无论是刚入门的程序员&#xff0c;还是年薪BATJ的技术大牛&#xff0c;都无可否认现在Python对于一个程序员职业发展的重要性。所以不仅是开发小白&#xff0c;甚至很多开发老手&#xf…

VBA 网页提取特定内容 - 网抓实践总结

目录 前言1. 常用代码和自定义函数1.1 文本 to 剪贴板1.2 获取网页主体源代码1.2.1 方法一:`InternetExplorer.Application`1.2.2 方法二:`MSXML2.XMLHTTP`1.2.3 方法三:`Msxml2.ServerXMLHTTP`1.2.4 方法四:WinHttp.WinHttpRequest.5.11.2.5 方法五:Microsoft.XMLHTTP1.3…

企业微信_Windows版本调试

文章目录1. 调试文档2. 下载插件3. 插件放置4. 开启调试模式5. 效果图6. 关闭调试模式1. 调试文档 客户端调试文档&#xff1a; https://developer.work.weixin.qq.com/document/path/95384 2. 下载插件 3. 插件放置 把 devtools_resources.pak 放到企业微信的安装目录下&am…

如果千百年前有视觉AI算法,世界将会是什么样的光景呢?

视觉AI算法在近些年取得了一定的突破&#xff0c;被应用在了越来越多的地方&#xff0c;我相信距离真正的AI普及这个大目标也越来越近了。我时常在想假如古代也有视觉AI算法&#xff0c;那是不是很多故事的结局都将被改写&#xff1f;《伯乐相马》、《皇帝批红》、《木兰从军》…

困境实现飞跃,梦想照进现实《安防视频监控数据存储蓝皮书》发布

前言 近年来&#xff0c;随着云计算、5G、AI 技术的不断兴起与发展&#xff0c;安防行业正在发生数字化转型&#xff0c;作为安防行业重要的数据采集与管理中枢&#xff0c;视频监控设备在数量上不断增加&#xff0c;在科技强有力的支撑之下&#xff0c;庞大的图片、视频数据组…

企业微信小程序_获取准确定位的方法及解决定位不准确的问题

文章目录一、经验分享1. 微信api现状2. 解决方案3. 适用场景二、小程序集成腾讯定位服务2.1. 注册腾讯开发者2.2. 创建应用2.3. 添加key2.4. 下载sdk2.5. 合法域名三、开发实战3.1. sdk拷贝3.2. 页面引用3.3. 页面部分3.4. 数据部分3.5. 方法部分四、真机调试4.1. 项目运行4.2.…

深度揭秘:腾讯存储技术发展史

采访嘉宾 | 腾讯云副总裁谢明等图源 | 视觉中国来源 | CSDN&#xff08;ID:CSDNnews&#xff09;在腾讯内部&#xff0c;负责腾讯存储技术研发的部门&#xff0c;一直被认为是生产技术专家的“黄埔军校”。腾讯不少技术方向的负责人&#xff0c;最早也都出自这个团队。这或许可…

作为后端开发如何设计数据库系列文章(一)设计传统系统表结构

本篇为第一篇。讲解传统系统的表结构设计&#xff08;Java开发&#xff09;。 讲讲如何避免数据库设计的一些坑&#xff0c;方便后期的开发与维护。 以前经常能够看到&#xff0c;数据库范式&#xff0c;现在说数据库三大范式的少了。 三大范式我以前也很严格的弄过&#xf…

常见字典用法集锦及代码详解

目录前言字典的简介1. 字典对象1.1 Add 方法1.2 Exists 方法1.3 Keys 方法1.4 Items 方法1.5 Remove 方法1.6 RemoveAll 方法2. 实例2.1 实例1. 普通常见的求不重复值问题2.1.1 问题2.1.2 实例代码2.1.3 代码详解2.2 实例2 求多表的不重复值问题2.2.1 问题2.2.2 代码2.2.3 代码…

企业微信小程序_集成腾讯地图实现精准定位考勤打卡

开源项目地址&#xff1a;https://gitee.com/gblfy/tx-position-check-in 关于微信小程序集成腾讯地图详情&#xff0c;可以参考&#xff1a;https://blog.csdn.net/weixin_40816738/article/details/122519497

18个PPT,29个提问解答,都在这儿啦!

4月25-26日&#xff0c;全球首个 Apache 顶级项目在线盛会 Flink Forward 中文精华版重磅开播&#xff0c;聚焦 Alibaba、 Google、AWS、Uber、Netflix、DellEMC、微博、滴滴等各大互联网公司实时计算的经典场景和业务故事&#xff0c;由 Flink 核心贡献者们对 19 个优质 talk …

CSDN公众号新功能上线,居然还能搜出小姐姐???(文末有福利)

为了给各位打工人更好的搜索体验CSDN总是在学习新技能这次CSDN公众号又给大家带来了一项全新的搜索技能在CSDN旗下的公众号内回复消息就能自动回复想搜索的内容啦小编来给大家演示一下&#xff0c;在公众号内输入“mysql安装教程”&#xff0c;就能得到CSDN全站内关于mysql安装…

使用Blink SQL+UDAF实现差值聚合计算

本案例根据某电网公司的真实业务需求&#xff0c;通过Blink SQLUDAF实现实时流上的差值聚合计算&#xff0c;通过本案例&#xff0c;让读者熟悉UDAF编写&#xff0c;并理解UDAF中的方法调用关系和顺序。 感谢军长在实现过程中的指导。笔者水平有限&#xff0c;若有纰漏&#xf…

VBA - 字典实例集锦

目录 前言1. 按接收日期批量不重复编号2. 用字典实现3个ComboBox关联的三级下拉3. 填表4. 二级字典嵌套-字典统计不重复计次5. 三级字典嵌套-根据机型汇总统计数量6. 二级字典嵌套-汇总调研数据7. 字典法去重7.1 对表格中的一列数据去重7.2 对一维数组去重8. 将字典输出到工作表…