企微第三方应用上架踩过的坑

在上架企微第三方应用是,提示应用授权失败,请检音是否正常处理授权,大概意思是想要上架,需要实现相关的授权功能

企微提供了两种授权方式

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

不管实现哪种方式,都需要处理回调事件,包括指令回调和数据回调

关于回调,可以看https://developer.work.weixin.qq.com/document/path/91116

在服务商后台配置好后,就可以开始处理

大致的处理方式为:

  1. 回调接口接收到数据报文后,进行验签
<xml> 
   <ToUserName><![CDATA[toUser]]></ToUserName>
   <AgentID><![CDATA[toAgentID]]></AgentID>
   <Encrypt><![CDATA[msg_encrypt]]></Encrypt>
</xml>
  1. 解析出参数里的密文,密文为具体的事件报文,不同类型的回调报文内容也会不一样
<xml>
  <SuiteId><![CDATA[ww4asffe99e54c0fxxxx]]></SuiteId>
  <InfoType> <![CDATA[suite_ticket]]></InfoType>
  <TimeStamp>1403610513</TimeStamp>
  <SuiteTicket><![CDATA[asdfasfdasdfasdf]]></SuiteTicket>
</xml>
  1. 解析出报文后,根据事件处理逻辑

注意,有一些回调事件要求接口响应在1s内,比如说授权通知事件

在授权流程中,我们主要需要处理两个指令回调事件

  1. 推送suite_ticket事件
  2. 授权通知事件

需要注意的是,第三方应用在指令回调中,ToUserName传递是的SuiteId,不是CorpId

想上架应用,处理好上边说到的两个指令回调基本就能通过授权验证

在调试过程中,可以在后台手动触发推送suite_ticket事件,这样就能验证你的接口是否能正确响应,还可以点击安装测试来模拟安装的事件触发

所以在回调接口中需要注意几点

  1. 注意验签用的是SuiteId还是CorpId
  2. 接口响应是否符合规范,GET请求为响应内容为上一步得到的明文消息内容,Post请求大多为字符串success
  3. 有一些回调要求在1s内响应,比如授权回调
  4. 在查看上架的日志中,发现除了SuiteId,还传输了别的id,导致验签没过,我暂时不知道是什么id,所以我将这些ToUserName不是SuiteId或者CorpId给过滤了,直接返回success

这些就是我上架应用时踩过的坑,总结下来一般就是回调接口的响应有问题,导致的这个报错

这里是一些回调问题的总结https://developer.work.weixin.qq.com/community/article/detail?content_id=16393569851337414359

posted @ 2024-07-29 14:31  阿弱  阅读(36)  评论(0编辑  收藏  举报