企业微信_获取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,一经查实,立即删除!

相关文章

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

作者 | 乔治娜乌斯蒂克翻译 | 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工作簿。…

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

文章目录一、开发前准备1. 开发文档2. 工具安装3. 安装插件4. 调整编译模式5. 选择企业6. PC 调试前端7. PC 调试后端二、甄姬调试前端2.1. 预览小程序2.2. 手机企微扫码2.3. 手机企微调试2.4. 多场景调试2.5. 手机企微调试前后端一、开发前准备 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;最早也都出自这个团队。这或许可…

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

目录前言字典的简介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安装…

如何在SQL Server 2019中添加数据敏感度分类的命令

作者 | Jordan Sanders翻译 | 火火酱。责编 | 晋兆雨头图 | CSDN付费下载于视觉中国为了确保数据库安全性和完整性&#xff0c;数据库管理员日常需要运行多种操作。因此&#xff0c;无论在何种情况下&#xff0c;我们都不能忽视数据库中敏感数据的重要性。在本文中&#xff0c;…

支撑数千家天猫商家CRM业务,数云高弹性数据库如何做

“数据&#xff0c;已经渗透到当今每一个行业和业务职能领域&#xff0c;成为重要的生产因素。人们对于海量数据的挖掘和运用&#xff0c;预示着新一波生产率增长和消费者盈余浪潮的到来”。-----麦肯锡 基于互联网和大数据和时代背景&#xff0c;用户在互联网上留下更多的印记…

全国高速恢复收费!阿里云:自由流“3大特色能力”使能智慧之路

5月6日&#xff0c;全国高速公路正式恢复收费。ETC普及优化程度、高速自由流收费模式等成为热点话题。随着取消省界高速公路收费站和全国ETC的普及&#xff0c;极大提升高速公路网通行效率&#xff0c;有效降低物流运输成本&#xff0c;减少收费站“堵车”现象&#xff0c;高速…

移动云11.11,钜惠High不停!

一年一度的双十一又来啦全民购物车已开起来&#xff01;然而复杂的优惠规则催生一大批通宵达旦看直播的定金人和尾款人对这些套路&#xff0c;移动云统统Say NO作为一朵有服务温度的“云”&#xff0c;让优惠简单点让用户买想买的东西&#xff0c;省该省的钱五重惊喜&#xff0…

使用Blink CEP实现差值聚合计算

使用Blink SQLUDAF实现差值聚合计算介绍了如何使用Blink SQLUDAF实现实时流上的差值聚合计算&#xff0c;后来在与付典就业务需求和具体实现方式进行探讨时&#xff0c;付典提出通过CEP实现的思路和方法。 本文介绍通过CEP实现实时流上的差值聚合计算。 感谢付典在实现过程中的…

企业微信小程序_授权登录接口获取用户userid

文章目录一、前置知识1. 阅读 企业微信小程序开发文档2. 企业微信小程序登录流程3. 微信小程序区别二、前端部分2.1. 调用登录接口2.2. 请求后端接口2.3. 项目源码三、后端部分3.1. yml配置3.2. 获取用户信息接口3.3. 获取token3.4. 工具类3.5. vo对象四、调试部分4.1. 模式切换…