У меня есть несколько приложений Rails, которые я собираюсь интегрировать с OmniAuth, но есть концептуальная проблема, с которой я сталкиваюсь, что я хотел бы выяснить в первую очередь. Рассмотрим следующий сценарий:
- Ваше приложение Foo поддерживает учетные записи OmniAuth через Twitter и Facebook.
- Джо приходит на ваш сайт и регистрируется через свою учетную запись Twitter. Это создает нового пользователя в Foo и связывает его с этой новой авторизацией Twitter.
- Джо выходит из Foo и забывает о сайте в течение шести месяцев.
- Джо возвращается в Foo, не помня, что он ранее вошел в систему с Twitter.
- Джо входит в систему с Facebook. Поскольку он еще не авторизовался через свою оригинальную авторизацию Twitter, нет никакого способа обнаружить, что он, фактически, тот же Joe, и создается новая учетная запись.
- Джо обнаруживает свою старую учетную запись и теперь разочарован тем, что его более старый контент привязан к этой старой учетной записи и что он не может войти в систему с Twitter и Facebook взаимозаменяемо.
Так как Twitter не снабжает Foo адресом электронной почты, универсальный идентификатор не используется для обнаружения того, что два Joes - это тот же Joe. Вы можете принять решение поддерживать только поставщиков, которые предоставляют вам адрес электронной почты пользователя, но это не помогает, если пользователь зарегистрировался с разными адресами электронной почты на разных провайдерах.
Единственное другое решение, о котором я могу думать, - предоставить пользователю способ слияния двух существующих учетных записей. Это большая головная боль по сравнению с относительной легкостью всего остального при использовании OmniAuth. Если это единственное решение, может ли кто-нибудь обратиться к руководству/учебнику, показывающему пример того, как это можно сделать? Я удивлен, что эта проблема не получила большего внимания, учитывая популярность OmniAuth.
Спасибо!