搜尋

首頁  >  問答  >  主體

php - 第三方登陸表的設計問題

一個用戶表
id name
然後每一種第三方就新增一個表
ex 微信
id openid uid(主用戶表id) .....

QQ
id openid uid

這樣用戶用不同的第三方就會有不同的帳號 一個用戶就擁有了多個帳號了
如何實現數據互通呢 比如微信登陸 可以綁定QQ 那麼以後微信和QQ的信息就同步了

習慣沉默習慣沉默2749 天前821

全部回覆(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
  • 取消回覆