我需要将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帐户。但是,再次有可能留下来创建一个重复的内部帐户。
处理这个问题的最佳做法是什么?主要使用的其他网站是什么?
答案 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弹出自己的登录窗口时,它们在表单上填写的用户名/密码将被忽略。
我希望能回答你的问题。