搜索

首页  >  问答  >  正文

php - 第三方登陆表的设计问题

一个用户表
id name
然后每一种第三方就新增一个表
ex 微信
id openid uid(主用户表id) .....

QQ
id openid uid

这样用户用不同的第三方就会有不同的账号 一个用户就拥有了多个账号了
如何实现数据互通呢 比如微信登陆 可以绑定QQ 那么以后微信和QQ的信息就同步了

習慣沉默習慣沉默2798 天前844

全部回复(2)我来回复

  • 習慣沉默

    習慣沉默2017-05-16 13:09:14

    可以有几种方式:
    第一种,冗余字段
    用户表user : id name phone email .....
    第三方登录表login:id uid wxopenid qqopenid......
    创建的时候给''然后后面绑定的时候更新相关字段。
    第二种 拆表
    用户表:user : id name phone email .....
    第三方表:openid: id wx_openid qq_openid....
    关系表relationship:uid oid 这里的oid就是第三方表
    这样设计的目的是 不用join操作,因为数据多了以后join操作很耗时间,我们在代码逻辑层先根据当前登录的uid获取relationship的oid,然后再selectopenid表的相关数据。

    不太建议都放在一个表的做法。。。

    回复
    0
  • ringa_lee

    ringa_lee2017-05-16 13:09:14

    1、为啥不是用一张表,表里有个字段,类似 type,表示是哪种第三发登录呢。

    2、用两个不同的第三方登录,的确就生成了两个账号了。这个时候如果再想把这两个账号合并,就比较复杂,牵涉到使用哪里数据了。当然也是可以这么做,大不了信息同时发到多个账号。

    一般的思路,先有一个账号(账号来源可以使某种第三方登录,邮箱注册,手机注册)反正要有一个账号,然后呢登录以后绑定新的一个第三方账号。可以参数 SF 账号设置嘛, /user...


    更新一下,一个表维护多个第三方登录 之 我的个人理解
    表字段 - oauth 表
    id // 可以自增
    type // 可以是 wx,qq,weibo 等等
    user_id ,//对应 user 表中的id
    data ,// mysql-text 类型,里面是 json 格式或者可以用 php 的序列化格式,我是推荐 json 格式,对应不同的 type 想存就存什么,对于数据读取,存放都没什么差别。

    回复
    0
  • 取消回复