代码之家  ›  专栏  ›  技术社区  ›  Aidas Bendoraitis Rob Sanderson

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

  •  4
  • Aidas Bendoraitis Rob Sanderson  · 技术社区  · 15 年前

    我需要实现facebook连接到一个网站,用户可能已经有他们的内部帐户。如果内部帐户不存在,则应使用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用户名和密码或网站的用户名和密码。

    登录窗体 , ,和 登记表 作为三种不同的选择,连接到facebook可以获得或创建一个内部帐户;然后 允许登录用户绑定其facebook帐户。但同样地,还有可能创建一个重复的内部帐户。

    2 回复  |  直到 15 年前
        1
  •  8
  •   serg    15 年前

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

    一旦用户与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登录)。

        2
  •  0
  •   Chuck Vose    15 年前

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

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