【问题标题】:Best workflow for binding website user accounts with facebook accounts将网站用户帐户与 facebook 帐户绑定的最佳工作流程
【发布时间】:2011-12-28 12:40:16
【问题描述】:

我需要实现 facebook-connect 到用户可能已经拥有内部帐户的网站。如果内部帐户不存在,则应从 facebook 凭据创建。此外,应该可以将现有帐户链接到 facebook 帐户。技术实现对我来说很清楚,但我更感兴趣的是实用、优化且易于理解的用户活动工作流程。

1) 我最初的想法是创建一个登录表单,其中包含用户和密码字段以及两个按钮:“与 facebook 连接”和“登录”。如果按“登录”,则内部帐户正常登录。如果按“与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 帐户。但话又说回来,还有可能创建一个重复的内部帐户。

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

【问题讨论】:

    标签: user-interface facebook usability


    【解决方案1】:

    登录表单:

    [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 登录)。

    【讨论】:

    • 这正是我在发布这个问题和一些头脑风暴后决定的。 :)
    • 只是一个评论,我真的很讨厌 facebook 连接的网站,它还要求您在他们的网站上进行 un/pw 设置,除了 facebook 登录之外还必须记住。我认为不良行为的一个例子是 reverbnation.com。因此,如果可能,请不要要求他们必须管理第二个密码。 :) 只是我的 2c。
    【解决方案2】:

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

    我希望这能回答你的问题。

    【讨论】:

    • 所以你仍然会有一个像我最初想法一样的表单,如果用户通过 facebook 连接,你会忽略输入的凭据吗?如果用户已经有一个内部帐户,然后通过 facebook 登录,他将创建第二个帐户。这可能只是因为混乱而意外发生。我想在不给用户太多指示的情况下避免这种混淆。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多