将网站用户帐户与Facebook帐户绑定的最佳工作流程

时间:2010-09-23 15:47:30

标签: user-interface facebook usability

我需要将facebook-connect实施到用户已经拥有内部帐户的网站。如果内部帐户不存在,则应从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 注册表单作为三个不同的选项,其中connect到Facebook将获得或创建一个内部帐户;然后为登录用户绑定单独的可选表单以绑定他们的Facebook帐户。但是,再次有可能留下来创建一个重复的内部帐户。

处理这个问题的最佳做法是什么?主要使用的其他网站是什么?

2 个答案:

答案 0 :(得分: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)。

答案 1 :(得分:0)

FBConnect应忽略您的用户名/通行证,您需要在数据库中存储将从fb connect登录返回的fb令牌。如果用户成功登录,您将被重定向到您选择的页面,您可以在该页面中获取该fb令牌并将其与数据库进行比较并忽略用户名/密码。当fb弹出自己的登录窗口时,它们在表单上填写的用户名/密码将被忽略。

我希望能回答你的问题。