原文地址: https://mp.weixin.qq.com/s/dX0v-Ovvrjm9Q7o9lPGNKw
在微信开发中,当开发者拥有多个移动应用、网站应用和公众号(含小程序,下同)时,可以通过获取微信用户的unionid来区分用户的唯一性。因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众号,用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。
对于微信公众平台第三方平台(以下简称第三方平台)的开发者而言,在平台同一账户下对应的多个公众账号时,为方便用户的管理,也需考虑使用一致的用户unionid来识别用户,要实现用户的unionid一致,关键是要将其所有的公众账号绑定在同一微信开发平台账号下。这就需要公众号在授权给第三方平台时,将微信开放平台帐号管理权限授予平台。
第三方平台在获得此权限后,可以代替已授权的公众号创建开放平台帐号或进行绑定/解绑操作。而绑定在同一个开放平台帐号下的公众号,用户unionid一致。开发者可调用“获取用户基本信息(wx.getUserInfo)”接口获取用户unionid。
微信开放平台帐号管理权限具体包括以下接口:
1)创建开放平台帐号并绑定公众号;
2)将公众号绑定到已有开放平台帐号下;
3)将公众号从开放平台帐号下解绑;
4)获取公众号所绑定的开放平台帐号。
需注意的是:
1)第三方平台只能绑定/解绑与开放平台主体一致的公众号。这意味着如果开发者要使用此权限来管理第三方平台同一账户下多个公众号的用户时,需要约束其同一账户的公众号主体一致。是否有此约束条件需考虑第三方平台具体的需求场景。如平台不能有此约束条件,则不建议使用文章提到方法来管理用户的unionid。
2)第三方平台不可操作(包括绑定/解绑) 通过open.weixin.qq.com线上流程注册的开放平台帐号。这意味着通过此权限,第三方平台只能将公众号绑定在第三方平台通过api创建的开放平台账户中,且不能解绑已经人工绑定在开放平台账户上的公众号。
3)此权限是一个互斥权限,用户授权给别的第三方平台后,需在微信公众平台中解绑后才能授权给第三方平台。
下面结合某第三方平台的公众号绑定授权流程来讲解微信开放平台帐号管理权限的使用。
此第三方平台在授权检测部分对授权的公众号有认证服务号和全部非互斥权限获取的要求,其他的第三方平台开发者可以依照自身平台需求来设计约束条件,这里不做具体阐述,重点探讨一下创建和绑定开放平台账户这部分。
1)判断是否获得微信开放平台帐号管理权限,如上所诉此权限是互斥权限,即用户在授权给别的第三方平台后,是不能授权给第三方平台,此时要获得此权限需用户登陆微信公众平台在设置>公众号设置>授权管理中取消授权后才能重新授权到第三方平台。考虑到此操作比较负责,所以在公众号授权中不做约束,但需在后台记录,便于此情况下的用户管理,以及后续运营人员的拜访了解具体情况和知道重新授权。
2)判断是否绑定开放微信平台账户,若未绑定则创建并绑定,已绑定则尝试解绑;
3)通过api接口绑定微信平台账户,解除绑定关系,创建新的微信开放平台账户并绑定,反之则后台记录后完成授权。
综上所诉,使用微信开放平台帐号管理权限来将多个公众账号绑定到同一开放平台账户绑定,使之同一的用户的uniondi一致是解决第三方平台同一账户下的用户管理的一个可行方法,但也如文中所诉,此权限使用也有诸多约束,第三方开放者需考虑自身平台的具体需求来取舍是否使用此权限来统一平台账户下的用户unionid.