Лучший рабочий процесс для привязки учетных записей пользователей сайта к учетным записям Facebook - PullRequest
4 голосов
/ 23 сентября 2010

Мне нужно внедрить 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. Но с другой стороны, остались бы возможности создать дубликат внутренней учетной записи.

Каковы лучшие методы борьбы с этим? Какие другие сайты используют в основном?

Ответы [ 2 ]

8 голосов
/ 23 сентября 2010

Форма входа:

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

(два взаимоисключающих раздела "или", вам не нужно заполнять форму входа, если вы используете Facebook)

Когда пользователь подключен к FB, и у вас нет связанной учетной записи пользователя для этого идентификатора, вы открываете другую форму:

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).

0 голосов
/ 23 сентября 2010

FBConnect должен игнорировать ваше имя пользователя / пароль, в вашей базе данных вам необходимо хранить токены fb, которые будут возвращены при входе в систему через fb connect.Если пользователь успешно войдет в систему, вы будете перенаправлены на страницу по вашему выбору, где вы можете взять этот fb-токен, сравнить его с базой данных и проигнорировать имя пользователя / пароль.Имя пользователя / пароль, которые они заполнили в форме, будут игнорироваться, когда fb откроет собственное окно входа в систему.

Я надеюсь, что это ответ на ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...