各位好:
目前常看到很多網站喜歡綁FB, yahoo,twitter 等第三方會員登入,
不過我在想以下作法是否有哪邊需要改進?
網站本站應該保留本身的會員資料表(member table),欄位有:name,email,sex,birthday,...
然後在其member table中多出幾格欄位,例如:facebook_user(紀錄FB回傳的特殊識別ID) , yahoo_user(紀錄yahoo回傳的特殊識別ID)
假設,目前A會員是經由FB登入 ,並回傳了10001 以及 a@xx.com
會員資料表(member table)就會自動寫入一筆
--name---email---sex----birthday---facebook_user---yahoo_user-----
null a@xx.com null null 10001 null
等到下次A會員又重新使用FB登入,那麼就會去撈出是否曾存在的資料:
email='a@xx.com' and facebook_user='10001'
假設有count=1 那麼表示是第二次登入了
可是現在有個問題,email在資料表中是唯一值,不可重複,
萬一A會員是改由yahoo登入 ,並回傳了34534566 (假設) 以及 a@xx.com
會員資料表(member table)又自動寫入一筆新資料
--name---email---sex----birthday---facebook_user---yahoo_user-----
null a@xx.com null null null 34534566
等於同一個A會員佔了2筆資料。
因此是否有一種帳號綁定的概念,
若是判斷到email是同樣的,
則先確認是否為同一人所有後,整合再一起,
變成:
--name---email---sex----birthday---facebook_user---yahoo_user-----
null a521@xx.com null null 10001 34534566
以上還是同一位A會員在不同網站使用相同email,
萬一又不同email....
因此不知道各位對於這類型的儲存跟解析有甚麼方式呢?
ASP.NET (VS 2013)有提供這樣的功能 (第三方會員登入)
例如 http://www.dotblogs.com.tw/mis2000lab/archive/2013/11/11/login_using_google_facebook_account.aspx
您要不要用他作一個範例,來觀察內建的DB是怎麼作的?
至少可以當成參考
他可以包含Google/ FB / 自訂帳號,這些都可在同一個DB裡面
您說的「保留本身的會員資料表(member table),欄位有:name,email,sex,birthday,...」
這些自訂的欄位,是指Profile功能嗎?
還是您本身已經有設計「會員資料表」,想跟系統新建的第三方會員登入的資料表
兩者"合併"在一起呢?
可能要請您把問題再描述一下 :-)
mis2000lab您好:
還是您本身已經有設計「會員資料表」,想跟系統新建的第三方會員登入的資料表
兩者"合併"在一起呢?
原先是思考是否為在"既有"「會員資料表」的情況下去擴充新的第三方欄位,
但是不確定這樣的作法是否好嗎?
他可以包含Google/ FB / 自訂帳號,這些都可在同一個DB裡面
請問所謂的在同一DB裡面,是指同一個資料表內嗎?
另外就是我沒有使用asp.net,所以無法重建這個過程。
但是我仔細看您的文章內容,
那個欄位似乎是單獨開給google紀錄的。
那張表只有3個欄位:userid, loginprovider, providerkey
http://files.dotblogs.com.tw/mis2000lab/1311/201311111940393.jpg
對題目的理解
使用第三方登入網站後有粉多使用心態
粉多使用者 1 不想留資料 2 想留資料 不想花時間 3....
是針對這1 2種人 但多次登入網站
要強制留下 相關資訊吧 並節省 相關資源
元宵節還沒到,但大家已經在「猜」原PO想問什麼了 :-)
有位前輩說過一句話:「你想越晚得到答案,就問的越模糊越好」 Orz
mis2000lab提到:
你想越晚得到答案,就問的越模糊越好
但問的太模糊
可能不會有人理啊
1.在同一張[會員資料表]中,增加第三方所需的欄位
如果採用這種這方式,假設是增加google登入(例如mis2000lab所提供的資料圖有看到:userid, loginprovider,providerkey),則是把這3個欄位alter到[原始會員表]中;增加fb登入,則多alter FB相關的欄位(如:fb_id,email,key等等)
以上的作法,好處是可以直接帳號綁定在同一人身上,不用join表,
但是壞處是,萬一之後要增加/減少某個第三方登入欄位,就要刪減該會員資料表...