2010-09-23 59 views
4

我需要實現Facebook連接到用戶已經擁有內部帳戶的網站。如果內部帳戶不存在,則應從Facebook憑據創建。也應該可以將現有帳戶鏈接到Facebook帳戶。技術實現對我來說很清楚,但我對實用,最佳和易於理解的用戶活動工作流程感興趣。用Facebook帳戶綁定網站用戶帳戶的最佳工作流程

1)我最初的想法是有一個登錄表單用戶名和密碼字段和兩個按鈕:「connect with facebook」和「login」。如果按下「登錄」,則內部帳戶通常會登錄。如果按下「連接facebook」,用戶將連接到Facebook,然後根據用戶和密碼的狀態,我可以檢索內部用戶並將其綁定與Facebook用戶,或創建一個新的內部用戶,並將其綁定到Facebook用戶,或檢索綁定到Facebook用戶的內部用戶。但是,我在工作流程中發現了一些問題。如果輸入的用戶和密碼與綁定到Facebook帳戶的用戶和密碼不同,則該怎麼辦?

我會盡量說明僞問題:

if "login" is pressed: 
    internal_user = authenticate(username, password) 

if "connect to facebook" is pressed: 
    facebook_user = get_facebook_user() 
    if username and password are filled in: 
     internal_user = authenticate(username, password) 
     if facebook_user has no internal_user: 
      facebook_user.bind_internal_user(internal_user) 
     else: 
      # conflict! what to do with it? 
      # facebook_user.get_internal_user() != internal_user 
    else: 
     if facebook_user has internal_user: 
      internal_user = facebook_user.get_internal_user() 
     else: 
      internal_user = facebook_user.create_internal_user() 

internal_user.login() 

而且用戶可能會感到困惑,詢問自己是否需要進入Facebook的用戶名和密碼或網站的用戶名和密碼。

2)另一種選擇可以是具有登錄表單連接到Facebook,和登記表作爲三個不同的選項,其中,連接到Facebook要麼獲得或創建內部帳戶;然後分開可選表格爲登錄用戶綁定他們的Facebook帳戶。但是,再次有可能留下創建一個重複的內部帳戶。

處理這些問題的最佳做法是什麼?其他網站主要使用什麼?

回答

8

登錄形式:

[username] | 
[password] | or [fbconnect button] with facebook 
    [ok]  | 

(兩個相互排斥的部分「非此即彼」,你不會,如果你使用Facebook需要填寫登錄表單)一旦用戶與連接

FB和你沒有相關的用戶帳戶,此UID則彈出另一種形式:

Welcome, 
Please choose username for this site: 
[username] [ok] 
(you can prompt to select a password as well if you want) 
---------------------------------------------------- 
If you already have an account on our site please enter your credentials: 
[username] 
[password] 
    [ok] 

此步驟後,你應該覆蓋 - 不管他們選擇哪種方式的結果應該是相同。

通常您在登錄時不會提示輸入Facebook連接用戶的密碼,他們只是使用Facebook連接按鈕,所以隨機生成的密碼會做。如果您想創建可以在沒有Facebook的情況下使用的全尺寸帳戶,那麼您會提示輸入密碼(但不要將其用於Facebook登錄)。

+0

這正是我在發佈這個問題和一些更多的頭腦風暴之後所決定的。 :) – 2010-09-23 20:48:33

+1

只是一個評論,我真的很討厭Facebook的連接網站,也需要你有他們的網站上的Un/PW設置必須記住除了Facebook登錄。我認爲不良行爲的一個例子是reverbnation.com。所以如果可能的話,請不要他們必須管理第二個密碼。 :)只是我的2C。 – DMCS 2011-12-28 05:47:18

0

FBConnect應該忽略你的用戶名/密碼,在你的數據庫中你需要存儲從fb連接登錄返回的fb令牌。如果用戶成功登錄,您將被重定向到您選擇的某個頁面,您可以在該頁面上獲取該fb令牌並將其與數據庫進行比較並忽略用戶名/密碼。當fb彈出自己的登錄窗口時,他們填寫在表單上的用戶名/密碼將被忽略。

我希望能回答你的問題。

+0

所以,你仍然會有一個像我最初想法一樣的表單,如果用戶通過Facebook連接,會忽略輸入的憑據?如果用戶已經有一個內部帳戶,然後通過Facebook登錄,他會創建第二個帳戶。這可能是因爲混亂而意外發生的。我不想給用戶太多的指示就想避免這種混淆。 – 2010-09-23 16:04:25