bug修复:企业微信 会话存档

官方API:地址 sdk

1. Finance目录结构问题

一定要注意了Finance 这个类是固定的目录结构 只能放到com.tencent.wework这个文件下!!!
我tm调了一下午 发现不是相对路径 是绝对路径!!!

2. sdk的版本问题

不要用最新的 要选稳定的 这个得听话
别问为什么 最新的会没有原因的报错

3.代理服务器的问题

因为部署的服务器是不能连接外网的,所以需要通过服务器的另一台机器代理请求访问

官方文档对这代理服务器参数描述:官方文档
注意 这两个字段是必传字段,不需要设置为"",而不是null(默默的调了很久,各种尝试之后的结果)

4. 报错40001

去后台管理把你的本地IP配上
在这里插入图片描述

5.报错41001

问题描述:报错信息真的是恶心呀 提示的是 access_token
文档:链接
各种尝试,最终发现问题。
根本原因是因为我参数配置问题:corpid和secret

/**
	 * 初始化函数
	 * Return值=0表示该API调用成功
	 * 
	 * @param [in]  sdk			NewSdk返回的sdk指针
	 * @param [in]  corpid      调用企业的企业id,例如:wwd08c8exxxx5ab44d,可以在企业微信管理端--我的企业--企业信息查看
	 * @param [in]  secret		聊天内容存档的Secret,可以在企业微信管理端--管理工具--聊天内容存档查看
	 *						
	 *
	 * @return 返回是否初始化成功
	 *      0   - 成功
	 *      !=0 - 失败
	 */
    public native static int Init(long sdk, String corpid, String secret);

6.会话存档解密失败问题

关于解密

在后台管理会要求开发人员配置公钥,这点注意的是 用私钥解的不是文本的密文,而是要用私钥去解密文的key,过程是这样的:

  1. 生成RSA公钥密钥,生成RSA在线工具,这块注意规则:生成密钥位数:2048位(bit),密钥格式:PKCS#1
  2. 后台存公钥的格式一定是要带着 -----BEGIN PUBLIC KEY----- 并且正文不能有换行符
  3. 将公钥配置在企业微信后台,加上*.replaceAll(“\n”,“”).trim()* ,这块dddd
  4. 调用…直接看官方文档吧

encrypt_random_key内容解密说明:
encrypt_random_key是使用企业在管理端填写的公钥(使用模值为2048bit的秘钥),采用RSA加密算法进行加密处理后base64 encode的内容,加密内容为企业微信产生。RSA使用PKCS1。
企业通过GetChatData获取到会话数据后:
a) 需首先对每条消息的encrypt_random_key内容进行base64 decode,得到字符串str1.
b) 使用publickey_ver指定版本的私钥,使用RSA PKCS1算法对str1进行解密,得到解密内容str2.
c) 得到str2与对应消息的encrypt_chat_msg,调用下方描述的DecryptData接口,即可获得消息明文。

就是这样的逻辑

关于版本号

一切看似就要成功de时候,然而解密出来的明文一直乱码
各种尝试,各种重新生成公钥密钥、加密方式、格式等等方法之后,还是不行
突然就发现了一个细节!
tm!竟然有版本号
然后获取的明文里面也有个字段是:publickey_ver
对上了 一切都对上了
此时此刻我想吟诗一首~~ 拨开云雾见天日,守得云开见月明
然后只要按照这个版本号对应的密钥解密就能成功
·
最终得到明文!!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值