记一次企业微信对接踩坑之旅(ಥ_ಥ)

时间:2022-07-28
本文章向大家介绍记一次企业微信对接踩坑之旅(ಥ_ಥ),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

最近公司项目需要接入企业微信,所以体验了一把企业微信的对接流程,把对接过程中遇到的问题总结一下。

前情提要 对接之前已经有了基于微信公众号的 H5 应用。需要将 H5 应用接入企业微信(这里应用需要提供给其它企业使用,所以先申请成为了服务商)。

对接流程如下

# 准备工作

  • 带公网 IP 服务器一台。如果没有则可以选择使用内网穿透工具进行本地调试。这里博主就是先在本地做的调试。
  • 开发人员需要成为企业管理员

# 网页应用创建

进入服务商后台 创建应用 应用类型:

  • 普通应用--企业OA、生产流程。有活跃度会被推荐。
  • 通讯录应用--对企业的通讯录拥有根部门的读写权限。一家企业只能授权一个通讯录应用。

读取手机号需要创建通讯录应用。如果你的应用需要获取用户敏感信息的话,貌似只能选择通讯录类型的应用。

# 网页应用开发信息配置

# 配置内容

使用

  • 应用主页:用户从企业微信工作台进入应用时会直接跳转到主页URL
  • 可信域名:仅支持可信域名内的应用调用OAuth2授权、JSSDK等
  • 安装完成回调域名:用户安装成功后可指定跳转至该域名的链接
  • 业务设置URL:授权企业的管理员可从企业微信后台的应用详情页免登录直接跳转该链接进行应用配置

回调

  • 数据回调URL:用于接收托管企业微信应用的用户消息
  • 指令回调URL:系统将会把此应用的授权变更事件以及ticket参数推送给此URL
  • Token:用于生成签名校验回调请求的合法性
  • EncodingAESKey:回调消息加解密参数,是AES密钥的Base64编码,用于解密回调消息内容对应的密文

# 配置流程

1.可信域名验证。下载验证文件并上传至站点根目录。 2.数据回调与指令回调 url 有效性验证 3.刷新ticket测试

在发生授权、通讯录变更、ticket变化等事件时,企业微信服务器会向应用的“指令回调URL”推送相应的事件消息。

推送suite_ticket 。(可以通过手动刷新ticket触发推送)

4.获取第三方应用凭证 根据suite_ticket获取获取第三方应用凭证 suite_access_token

# 网页应用安装测试

服务商可自行授权测试该应用

  • 每个应用目前仅允许10个不同企业微信授权测试
  • 用于测试授权的企业微信,不能再进行正式应用的授权

1.获取临时授权码auth_code(有效期10分钟)

点击安装测试进行授权,触发企业微信后台会推送授权成功通知

2.获取永久授权码(permanent_code) 使用临时授权码换取授权方的永久授权码

# 应用登录功能接入

1.构造第三方oauth2链接 构造如下的链接来获取code

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

注:scope 可使用 snsapi_userinfo 。snsapi_privateinfo 并不能获取成员的手机,邮箱。 可以参考下图客服的回答。

2.使用 code 换取企业成员 userid 使用第三方应用的suite_access_token及 code 换取企业成员信息

3.使用企业的永久授权码获取企业 access_token

4.使用企业成员userid获取成员信息 中的手机号 在通讯录同步助手中此接口可以读取企业通讯录的所有成员信息,而自建应用可以读取该应用设置的可见范围内的成员信息。

这里如果创建的应用所选应用分类不是通讯录应用的话是无法获取到用户的手机号的。

5.利用手机号(或者其它信息)做登录

# 应用审核上线

已认证企业微信的服务商,可进入应用管理—点击提交上线—勾选应用—提交上线。 企业微信团队会在3个工作日内完成审核,审核结果会通过"企业微信团队"通知服务商管理员。

然而,你想的太简单了小盆友。。 可能是运气不好吧,碰上企业微信产品内部策略调整。无法上线。

客服对此的解释:

# 对接感受

1.企业微信的文档部分信息与实际接口请求返回有出入,文档信息有一定滞后性 2.客服沟通不便,社区内没有解决问题,顺着文档的联系方式找到客服,但是可能需要经历机器人客服->人工客服->技术客服->合作伙伴支持客服->合作伙伴产品客服->腾讯内部其它支持人员。

一般到技术客服那一步就可以解决问题了,但是也存在始终无法解决的情况(需要你更换实现方案)

# 参考资料