发表日期:2019-08 文章编辑:小灯 浏览次数:3505
首先我们的系统实现了第三方WEB网站扫码登录和第三方WEB网站免登两种方式。希望用户登入的时候可以获取到该用户的所属的所有企业,后来发现该数据并没有开放。过程中发现了unionid和dingid的区别。
需要注意的点:
1.前端页面二维码参数:appid(例如企业A在钉钉开发者平台申请的应用appid)
2.后端需要:需要appid和appSecret调用一系列的接口,最终获取客户信息。但是用户信息比较有限(已经确定不能获取到企业信息,仅能获取nick,unionid,dingId,openid)
3.虽然是企业A申请的应用appid,企业B的用户扫码的时候也可以登入企业A发布的应用, 扫码仅校验用户,不校验企业。
4. 如果要实现仅A企业的用户可以登入应用的话,暂时有一种方案是当用户登入之后,利用企业A的CorpId和CorpSecret,通过接口查询信息,程序判断该用户是否属于该企业
5.dingId不推荐作为全局使用, 不能通过dingId和userid互查。(钉钉全局唯一,用户可以修改一次。https://open-doc.dingtalk.com/docs/doc.htm?treeId=173&articleId=107394&docType=1,有的地方说是不可修改,具体未求证),unionId是推荐的企业内全局唯一,并且不可修改。
6.如下是用户A的。在不同企业下有两个unionid。 在公司A下面
在公司B下面
7. user1 属于B企业不属于A企业。扫A企业的码之后的unionid是什么?
下图是利用查询api,查询B企业中,user1(仅加入了企业B)unionId。
下面是user1扫A企业的二维码时,生成的unionId.
利用A企业的assess_token查询unionid和userid转换时
利用B企业的assess_token查询时
进一步测试:
把user1加入企业A时,查看user1的unionid
8. user2 属于B企业又属于C企业,但是不属于A企业。扫码之后的unionid是谁的?
其中unionid是A企业的。和问题7一样
总结: unionid是一个企业内,某个用户的唯一标识,如果A企业申请了一个二维码(涉及appid绑定了企业),然后user1属于B企业但是不属于A企业,扫码的时候会生成一个unionid,该id是user1在企业A的唯一id,不管user1是否加入了A企业,都不会改变(如果dingId改变的情况没试过)。