企业微信外部客户踩坑20220721

1. 加客户或者进客户的群只回调external_user_id

说明

如果一个微信用户与一个企业微信组织有关系

加了企业下的员工的好友、进了企业下的员工组织的群等

那么可以根据该用户的unionid、openid(公众号、小程序的都行)
获取该用户在该企业的外部userId,也就是externalUserId
参考:https://developer.work.weixin.qq.com/document/path/95926#unionid%E8%BD%AC%E6%8D%A2%E4%B8%BA%E7%AC%AC%E4%B8%89%E6%96%B9external_userid

如果一个微信用户与一个企业微信组织没有关系

那通过上面的接口是获取不到externalUserId的

回调

微信用户加企业微信员工号好友或者入群,都会有来自微信的回调
这个时候,回调只给你一个该企业的标识和这个用户的externalUserId

总结

通过上面的情况,如果要从正面绑定关系,只能使用系统的用户id,因为此时新用户的externalUserId拿不到
回调维护关系,是不能通过externalUserId获取系统的用户id,导致找不到关系

解决方案

1. 可以通过维护一张表

表字段有这些

  • 系统用户id
  • source(来源,哪里用到维护哪里)
  • 是否补充过

通过不同回调场景,找到不同来源的、未补充过的用户,然后在回调之前补充externalUserId
补充完后,继续正常的业务逻辑

注意⚠️

该接口调用有限制
image.png

2. pending_id

流程

  1. app端通过unionid, saas_id换取pending_id
  2. 记录用户的account_id与pending_id映射关系
  3. admin通过external_id换取pending_id
  4. 通过pending_id查询到account_id
  5. 继续业务处理

企业微信外部客户.png

涉及到的接口

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

image.png
image.png

注意⚠️

  1. 权限说明

image.png

调用external_user_id换取pending_id接口需要企业认证,不认证的会报错

Thu Sep 01 16:55:30 CST 2022
There was an unexpected error (type=Internal Server Error, status=500).
?????610016, ?????corp no certification, hint: [1662022530347281147796521], more info at https://open.work.weixin.qq.com/devtool/query?e=610016????????{"errcode":610016,"errmsg":"corp no certification, hint: [1662022530347281147796521], more info at https://open.work.weixin.qq.com/devtool/query?e=610016","result":[]}
  1. 如果是老授权的企业,微信回调的external_user_id是老的,不知道老的external_user_id是否能换取pending_id

直接拿回调的external_user_id去换pending_id
不需要拿老的external_user_id去换新的external_user_id
然后再拿新的external_user_id去换pending_id,这样反而换不到

image.png

回调老的external_user_id就用老的去换,回调新的就用新的去换

  1. 拿external_user_id去换pending_id,没有换到

见上面的问题

2. 20220628之前授权的企业,回调的外部userId是老的

说明

回调的是老的externalUserId,你主动补的是新的externalUserId
所以,在上面一个问题的第一个解决方案中
你补充的都是新的externalUserId,用老的是查不到的

你需要先维护老的授权的企业,然后需要把老externalUserId对新externalUserId的对应关系维护一下
最后统一使用新的externalUserId

参考代码:wx.impl.WxAccountSaasServiceImpl#exchangeAndGetExternalUserId

posted @ 2022-09-02 17:26  loseself  阅读(523)  评论(0编辑  收藏  举报