V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xoxo419
V2EX  ›  问与答

微信 openid 与 unionid 两个都存还是只存 unionid?

  •  
  •   xoxo419 · 2017-09-14 10:34:48 +08:00 · 12911 次点击
    这是一个创建于 2410 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问: unionid 可以代替 openid 那么 openid 意义何在?

    问: 同一个用户会出现不同 openid 的情况, 如果 openid unionid 都要存的话表设计如下可? (考虑到 QQ 微博 微信)

    tab_user
    
    id openid type   //openid 存的微信的 unionid 或 QQ 的 openid 微博的 uid 
    
    
    tab_wx_user
    
    id tab_user_id openid //关联上方的 unionid 及相关用户的 openid 
    
    11 条回复    2017-09-14 12:34:56 +08:00
    pubby
        1
    pubby  
       2017-09-14 10:43:48 +08:00 via Android   ❤️ 1
    都存,openid 有其他用处,发送消息,微信支付啥的要用到
    zeayes
        2
    zeayes  
       2017-09-14 10:43:54 +08:00   ❤️ 1
    openid 是针对应用唯一的,unionid 是针对企业唯一的。
    QQ 也是支持 unionid 的,微博只有 openid。
    第三方登录可以存在一张表里面,用类型区别就可以了。
    linxl
        3
    linxl  
       2017-09-14 10:50:23 +08:00
    unionid 是需要关联另一个平台 (忘记叫啥) 才会看到的. 不然你微信网页授权只会拿到 openid.
    crayhuang
        4
    crayhuang  
       2017-09-14 10:58:18 +08:00
    @linxl 微信开发者平台
    crayhuang
        5
    crayhuang  
       2017-09-14 10:58:29 +08:00
    @linxl 打错 开放平台
    stop9125
        6
    stop9125  
       2017-09-14 11:00:41 +08:00 via iPhone   ❤️ 1
    unionid 是对企业唯一的,开放平台和公众平台的 openid 不一样。建议存一下
    stop9125
        7
    stop9125  
       2017-09-14 11:01:39 +08:00 via iPhone
    有些场合还是只能用 openid,微信就这么蛋疼。
    Jealee
        8
    Jealee  
       2017-09-14 11:02:29 +08:00   ❤️ 2
    unionid 是微信开放平台的。至于作用的话——
    对于绑定了同一个开放平台的两个服务号 A 和服务号 B,用户 1 关注 A 和 B 会有不同的 openid,但他们的 unionid 的相同的。
    也就是说可以用它来确定多个公众号的用户是否是同一个人。当然可以通过公开信息判断,但并不严谨,因为资料都是可以修改的,雷同也是完全可能的。
    当然,其实不用 unionid 也是可以实现这个需求的。方法是,每次用户第一次访问公众号页面,让他自动跳转一个固定的公众号(静默授权,记录 openid ),再跳回来。这样的话不需要通过 unionid 也能知道用户在多个公众号是否为同一人。唯一的缺点就是用户的第一次访问页面需要跳转多次。
    xoxo419
        9
    xoxo419  
    OP
       2017-09-14 11:27:58 +08:00
    @zeayes
    @pubby 如果都存的话, 那么是不是就像我上面的表需要两张表, 一张单独来存微信的 openid?

    那么我这个 tab_wx_userd 是不是还要增加一个 app_id 的字段把对应的应用 ID 也存下来区分 openid 是属于哪个应用来的?

    **原**
    ```
    tab_wx_user

    id tab_user_id openid
    ```
    **增加**
    ```
    tab_wx_user

    id tab_user_id openid app_id
    ```
    pubby
        10
    pubby  
       2017-09-14 12:28:59 +08:00 via Android
    @xoxo419 怎么存看你自己的设计了。反正根据用户要能查到 openid

    根据 openid (和 appid,如果有多个 app 的话)要能查到对应用户
    onlyhot
        11
    onlyhot  
       2017-09-14 12:34:56 +08:00
    openid 必须存。openid 是针对单个应用。unionid 是用来识别某个客户在同一个开放平台下的多个应用之间是否是同一个客户。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2945 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 03:40 · PVG 11:40 · LAX 20:40 · JFK 23:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.