Django, и авторизация через социальные сети (django-social-auth)?

Пишу небольшой развлекательный сайт на Django. Когда дошло дело до создания странички регистрации первое что пришло в голову:«Все сейчас делают авторизацию через социальные сети, ну а я чем хуже?». Скачал django-social-auth, начал пробовать. Увы как это часто со мной бывает — сначала делаю, а уже потом думаю. Настроил авторизацию через Vkontakte, порадовался, а затем задумался как же всё это работает… Ну вот предположим на сайте настроена авторизация через vkontakte и twitter. Таким образом если я попытаюсь авторизироваться через каждый сервис — будет создано 2 разных аккаунта, что как-то бредово. Нет, конечно можно поспорить с тем что зачем авторизироваться через разные социалки, если можно всегда только через одну, но… А что если пользователь скажем выпилит свою страничку из VK? Получается зайти под своим аккаунтом на мой сайт больше не сможет? Конечно пользователь из базы моего сайта при удалении страницы в VK никуда не денется, но и войти без пароля не возможно.



Далее насколько я понял (а почти нулевые знания англ. меня сильно подводят) этот вопрос можно решить через механизм ассоциаций, скажем привязав все аккаунты из социалок пользователя к единому email, верно? Но тогда мы сталкиваемся с другой проблемой, ведь как я понял к примеру VK и Twitter не дают email-а пользователя, заставлять вводить в отдельной форме? Но чем тогда такая авторизация отличается от обычной регистрации логин / пароль / email?



В общем если есть люди которые разбирались — подскажите, я верно мыслю, или в чем-то ошибаюсь?
  • Вопрос задан
  • 7574 просмотра
Пригласить эксперта
Ответы на вопрос 5
@vasilykharitonov
Можно реализовать решение на базе двух таблиц.
Users — пользователи
Login — аккаунты в соц. сетях.
В таблице Login есть связь с таблицей Users.

Если пользователь авторизовался на сайте, то вход через другую соц. сеть может привязывать новый Login к существующей учетной записи (например, она создана при первом входе через другую соц. сеть или при регистрации).
Ответ написан
barker
@barker
Мыслите правильно, но особо приличного и универсального решения как бы и нет, по причинам озвученным вами же — сложность сопоставления аккаунтов в разных соцсетях. А если упростить, то, очевидно, возникнет проблема безопасности.
Ответ написан
Комментировать
int03e
@int03e
Мне кажется что приличного решения и нет, как сопоставлять аккаунты? Как вариант, можно после регистрации ненавязчиво спрашивать e-mail. Укажет — хорошо, не укажет — ну и ладно.
Ответ написан
Комментировать
hOtRush
@hOtRush
я например пользуюсь ulogin.ru, поэтому мэил всегда возвращается, и можно сделать проверку, есть ли он в бд или нет.
а плодить аккаунты на сайте имхо глупо
Ответ написан
Комментировать
Если для сайта почта нужна, то нужно, так или иначе, сделать запрос почтового ящика у пользователя. И при этом нужно проверить что эта почта дествительно принадлежит этому пользователю. Соотвественно, можно предложить такое решение:
При регистрации через ненадежные сервисы всегда спрашивать почту. И после регистрации выполнять процедуру проверки отправив письмо со ссылкой на активацию. Активация нужна не для активации логина, а для удостоверения в том что почта не левая. Если пользователь не желает ее подтверждать — это его личная проблема.
При этом нужно учитывать что делать привязку новой соц. (ненадежной) сети к старому аккаунту по тихому тоже нельзя, и здесь тоже нужно подтвержение того что старый аккаунт дествительно принадлежит тому же человеку что и емайл указанный в старом.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы