如何完美地关联unionId?
发布于 7 年前 作者 taomin 10120 次浏览 来自 官方Issues

实际情况中,很常见的一种情况:先有公众号,进行网页开发,一段时间后,上线小程序或者APP。这时候就必须将原有的网页授权信息补充unionid,因为原来可能是没有的。可以通过微信API批量地获取「已关注公众号」用户的unionId并更新到系统里。

但是,之前的授权信息可能是单次授权,用户并没有关注公众号,那么对于这部分用户,是无法通过微信的API获得unionId的。

这时候,就需要在系统逻辑中兼容这种情况,即下次这些用户登录(单次网页授权)时候,如果unionId没有,就要顺便将unionId更新上。但是,如果这些人“下次”是通过小程序或者APP进来呢?因为之前的账户信息没有unionId,所以小程序登录后无法通过unionId关联到之前的账号(而之前的账号有可能是有资产的,比如余额、积分、券)。

不知道大家有没有遇到类似的情况。是如何解决的?

3 回复

开放平台把公众号跟小程序绑定

根据你的例子:

  1. 在这一步只能获取到openId,比如{ name:"用户A",openId:123 ,unionId:null}

  2. 绑定开放平台后可以获取到unionId了

  3. 用户A再次进入小程序,这时候就可以获取到unionId和openId,比如{unionId:321,openId:123}.这时候通过openId和用户A关联起来并填入unionId呀

具体的例子:

  1. 用户A通过网页授权登录h5网站,根据授权的accesstoken获取到用户的基本信息(但此时没有unionid,因为小程序还没上线),创建了用户账号A。注意:用户此时可能没有关注公众号。

  2. 上线了小程序并绑定了开放平台,此时所有的授权和获取用户信息接口都会获得unionId

  3. 用户A通过小程序登录,由于之前的账号A并没有unionId信息,所以此时的小程序授权即使已经能拿到unionId,但是却关联不到账号A,只能创建一个新的账号B

我们在上线小程序后想要通过API批量获取之前账号A的unionID,但是由于用户A并没有关注公众号,所以通过API是获取不到unionID信息的。

回到顶部