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