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

Aid*_*tis 4 usability user-interface facebook

我需要实现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()
Run Code Online (Sandbox Code Playgroud)

此外,如果用户需要输入Facebook用户名和密码或网站的用户名和密码,用户可能会感到困惑.

2)另一种选择可能是登录表格,连接到Facebook,以及注册表格作为三个不同的选项,连接到Facebook将获得或创建一个内部帐户; 然后是一个单独的可选表单,用于登录用户绑定他们的Facebook帐户.但是,再次有可能留下来创建一个重复的内部帐户.

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

ser*_*erg 8

登录表格:

[username]   |
[password]   |  or [fbconnect button] with facebook
   [ok]      |
Run Code Online (Sandbox Code Playgroud)

(两个互斥的部分"或者",如果你使用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] 
Run Code Online (Sandbox Code Playgroud)

在这一步之后你应该被覆盖 - 无论他们选择哪种方式,结果应该是相同的.

通常你在登录时不提示Facebook连接用户的密码,他们只是使用facebook连接按钮,所以随机生成的密码就行了.如果你想创建可以在没有facebook的情况下使用的全规模帐户,那么你提示输入密码(但是仍然不要用它来登录facebook).