收藏
回答

如何完美地关联unionId?

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

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

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

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

--解决方法:没有。所以建议大家如果有扩展不同平台的打算,就在一开始用开放平台绑定好保证unionid一直都有。

最后一次编辑于  2020-06-12
回答关注问题邀请回答
收藏

5 个回答

  • 另半颗星辰
    另半颗星辰
    2022-04-27

    通过公众号把他的粉丝列表拉入小程序里面,然后把公众号的unionid保存下来,然后等到下次粉丝登录的时候,查看unionid,再在前面保存的unionid里面去映射


    2022-04-27
    有用
    回复
  • there
    there
    2021-02-23

    和你遇到了相同的问题,请问你是怎么解决的?

    另外,你是在用户表里新增了一个unionid字段吗?每次小程序/oauth用户进来,先拿到uniondid,然后去用户表查对应的用户ID?

    2021-02-23
    有用
    回复
  • 原初魔鬼
    原初魔鬼
    2019-08-12

    根据你的例子:

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

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

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

    2019-08-12
    有用
    回复 7
    • ZhangV
      ZhangV
      2019-08-12
      openId是不一样的
      2019-08-12
      回复
    • ZhangV
      ZhangV
      2019-08-12回复ZhangV
      如果一样,unionId就不需要了
      2019-08-12
      回复
    • 原初魔鬼
      原初魔鬼
      2019-08-13回复ZhangV
      我明白了是用户A先进入你们的公众号,这时候是{ xcxOpenId:null,gzhOpenId:123,unionId:null },然后现在这个用户进入你们的小程序,你想把这个小程序帐号和公众号关联起来.好像真没啥办法.你们的公众号不是强制授权的吗?公众号不授权的话,头像昵称都没有的呀
      2019-08-13
      回复
    • ZhangV
      ZhangV
      2019-08-13回复原初魔鬼
      公众号强制授权也没有用,你不能确保用户「第二次」是用小程序还是公众号进来的,如果用公众号授权还好说,可以补全unionId。但是如果「第二次」是小程序进来的话还是没办法。
      2019-08-13
      回复
    • 原初魔鬼
      原初魔鬼
      2019-08-13回复ZhangV
      如果公众号强制授权后,小程序就可以静默获取unionId,这样就可以通过unionId关联了
      2019-08-13
      回复
    查看更多(2)
  • ZhangV
    ZhangV
    2019-08-10

    具体的例子:

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

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

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

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

    2019-08-10
    有用
    回复
  • 鲤子
    鲤子
    2019-08-09

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

    2019-08-09
    有用
    回复 3
    • ZhangV
      ZhangV
      2019-08-10
      在开放平台将小程序和公众号绑定到同一账号里才会有unionId,但是我的问题是:由于小程序是后申请的,有一部分“单次授权(oauth)”的用户,在小程序申请并绑定开放平台后,无法通过unionId关联。(这部分用户也没有办法获得unionId)
      2019-08-10
      回复
    • 鲤子
      鲤子
      2019-08-10

      不太明白你什么意思,如果你是说之前已经授权保存下来的用户没有unionID,我记得开发平台那里好像可以批量获取unionID。又或者等之前的用户再次登录的时候获取到unionid然后更新自己的数据。

      2019-08-10
      回复
    • ZhangV
      ZhangV
      2019-08-10回复鲤子
      没错,是有批量获取unionId的API,但是前提是要用户已经关注公众号才能获取到。我上面所谓的“单次网页授权”是指用户只是授权,可能并没有关注公众号。
      2019-08-10
      回复
登录 后发表内容
问题标签