企业微信会话存档服务记录过程

因为一些临时项目,需要开通一下企业微信的会话存档,并拉取到本地,进行一些汇总分析,只做短期使用。

在github上找到一个开源库
https://github.com/5venw0ng/QyChat

https://github.com/5venw0ng/QyChat-iview

于是fork了代码,进行开发,但是在开发过程中,遇到了一些坑,现在记录下来

错误1:weijava.security.InvalidKeyException: IOException : algid parse error, not a sequence

这个错误是由于PKCS的版本问题造成的,由于在生成秘钥对的时候,使用的是PKCS#1生成的,在本地私钥解密的时候也是如此,但不知为何,报错了,但是,将它转换成PKCS#8格式即可

在下面的网站即可转换 PKCS#1 to PKCS#8 同样在生成秘钥对的时候,也是用这个网站的

file

错误2:java.lang.UnsatisfiedLinkError: no WeWorkFinanceSdk_Java in java.library.path

这个坑踩的最久,是在调用so库文件的时候出现的,在windows中,会从PATH环境变量的目录中去找 .dll文件,linux则是在 LD_LIBRARY_PATH 环境变量的目录下去找 .so 文件,而我的环境是MacOS,并且是根据Java版本不同而不同的

  • 先说Java 8以前的版本(Java 7)

    • Windows:PATH
    • Linux:LD_LIBRARY_PATH
    • Mac:DYLD_LIBRARY_PATH
  • 针对Java 8的版本

    • Windows:PATH
    • Linux:LD_LIBRARY_PATH
    • Mac:JAVA_LIBRARY_PATH

但是我的MacOS无论如何用怎么的环境变量,都是报这样的错,所以我最后的解决办法是在一台linux的主机上,设置一个 LD_LIBRARY_PATH 的环境变量,然后把企业微信提供的 libWeWorkFinanceSdk_Java.so 文件放到对应目录中,别忘记source 一下

另外提一句,网上有个办法是在maven打包的时候,把so文件一起放到jar中,此方法我尝试失败了

最后记得在微信提供的Finance.java 中,加载本地库的方法语句是

System.loadLibrary("WeWorkFinanceSdk_Java");

不要写成

System.loadLibrary("WeWorkFinanceSdk_Java.so");

一些小问题

  • 下载的视频文件格式是mp4,音频文件格式是 amr,可以使用 这个库 来转换成mp3
  • 如果是群聊,在分组显示的时候记得用roomid来区分,因为不同的人发送消息,tolist是不一样

站内相关文章:

Comment ()
如果您有不同的看法,或者疑问,欢迎指教