实际情况中,很常见的一种情况:先有公众号,进行网页开发,一段时间后,上线小程序或者APP。这时候就必须将原有的网页授权信息补充unionid,因为原来可能是没有的。可以通过微信API批量地获取「已关注公众号」用户的unionId并更新到系统里。
但是,之前的授权信息可能是单次授权,用户并没有关注公众号,那么对于这部分用户,是无法通过微信的API获得unionId的。
这时候,就需要在系统逻辑中兼容这种情况,即下次这些用户登录(单次网页授权)时候,如果unionId没有,就要顺便将unionId更新上。但是,如果这些人“下次”是通过小程序或者APP进来呢?因为之前的账户信息没有unionId,所以小程序登录后无法通过unionId关联到之前的账号(而之前的账号有可能是有资产的,比如余额、积分、券)。
不知道大家有没有遇到类似的情况。是如何解决的?
--解决方法:没有。所以建议大家如果有扩展不同平台的打算,就在一开始用开放平台绑定好保证unionid一直都有。
通过公众号把他的粉丝列表拉入小程序里面,然后把公众号的unionid保存下来,然后等到下次粉丝登录的时候,查看unionid,再在前面保存的unionid里面去映射
和你遇到了相同的问题,请问你是怎么解决的?
另外,你是在用户表里新增了一个unionid字段吗?每次小程序/oauth用户进来,先拿到uniondid,然后去用户表查对应的用户ID?
根据你的例子:
在这一步只能获取到openId,比如{ name:"用户A",openId:123 ,unionId:null}
绑定开放平台后可以获取到unionId了
用户A再次进入小程序,这时候就可以获取到unionId和openId,比如{unionId:321,openId:123}.这时候通过openId和用户A关联起来并填入unionId呀
具体的例子:
用户A通过网页授权登录h5网站,根据授权的accesstoken获取到用户的基本信息(但此时没有unionid,因为小程序还没上线),创建了用户账号A。注意:用户此时可能没有关注公众号。
上线了小程序并绑定了开放平台,此时所有的授权和获取用户信息接口都会获得unionId
用户A通过小程序登录,由于之前的账号A并没有unionId信息,所以此时的小程序授权即使已经能拿到unionId,但是却关联不到账号A,只能创建一个新的账号B
我们在上线小程序后想要通过API批量获取之前账号A的unionID,但是由于用户A并没有关注公众号,所以通过API是获取不到unionID信息的。
开放平台把公众号跟小程序绑定
不太明白你什么意思,如果你是说之前已经授权保存下来的用户没有unionID,我记得开发平台那里好像可以批量获取unionID。又或者等之前的用户再次登录的时候获取到unionid然后更新自己的数据。