В настоящее время я создаю веб-приложение (мое первое) и хотел включить возможность OAuth, чтобы пользователи могли войти через Twitter и Facebook.Я строю его в Синатре и посмотрел на драгоценный камень OmniAuth, который, кажется, как раз подходит для этой работы.У меня возникла проблема с изменением модели User.
В настоящее время у меня есть обычное имя, фамилия, имя пользователя, адрес электронной почты и пароль, причем имя пользователя уникально, так что я могу использовать его для идентификатора, и, как и в твиттере, я могу набрать www.myapp.com / username, чтобы найти информацию об этом пользователе.Я решил, что для первоначальной версии я просто буду использовать твиттер в качестве логина, потом фейсбук и, наконец, обычную регистрацию.Моя проблема в том, что более вероятно, что люди будут иметь те же имена пользователей в Facebook, что и в Twitter.Так, например, если я войду в систему с помощью твиттера и возьму идентификатор «newuser», это будет проблемой, когда кто-то с таким же именем пользователя из Facebook попытается присоединиться.
Драгоценный камень OmniAuth работает, предоставляя хэш информации о пользователе.Я собираюсь использовать Mongo, поэтому я могу включить в твиттере поле Twitter и Facebook и хранить там хэши, я просто немного озадачен тем, как создать уникальный идентификатор, когда более чем вероятно, чтов обеих службах будут люди с одним и тем же именем пользователя, или что после внедрения обычного входа в систему кто-то может зарегистрироваться и взять имя пользователя, которое уже используется в твиттере или фейсбуке, не давая тем людям зарегистрироваться в своем твиттере / фейсбукесчета.
Мне было бы действительно интересно услышать, как другие подошли к этому.