Авторизация через социальные сети – просто и удобно

В настоящее время на многих сайтах используется система регистрации-авторизации через социальные сети. Однако в большинстве случаев регистрация через них происходит отдельно от регистрации на сайте. В данной статье я расскажу, как можно получить связанный механизм.

В любой системе регистрации есть логин, который пользователю необходимо ввести вместе с паролем. В настоящее время в качестве логина могут использовать псевдоним, e-mail и номер мобильного телефона. Именно к логину мы будем привязывать все данные пользователя, а также аккаунты в социальных сетях. В своем проекте я использовал четыре социальные сети: Facebook, Twitter, Одноклассники и Вконтакте.

Давайте рассмотрим структуру базы данных. Хранить информацию мы будем в трех таблицах, назовем их users, balances и socialdata.

В таблице users мы будем хранить личные данные пользователей. Структура таблицы может содержать следующие колонки: id, password, email, phone, lastname, firstname и т.д.

В таблице balances мы будем хранить данные о сумме денег на счету пользователя, а также дату регистрации, точнее, дату создания баланса. Структура таблицы может содержать следующие колонки: id, id_users, sum, date_created. Если на вашем сайте не предусмотрены финансовые операции, то данную таблицу можно не использовать.

В таблице socialdata мы будем хранить id пользователей, полученные от API социальных сетей.  Структура таблицы может содержать следующие колонки: id, id_users, id_fb, id_vk, id_od и т.д.

Теперь для работы наших таблиц мы создадим связи. Для этого в таблице users мы добавим индекс KEY к столбцу id. Далее мы создадим Foreign keys, который свяжет id_users в таблицах  balances и socialdata и id  в таблице users.

Дальше определимся с логикой работы нашей системы. В нашем проекте мы решили, что все данные будут связаны с логином, а значит, нам нужно будет запросить эти данные у пользователя. Если пользователь впервые заходит на сайт, то он может зарегистрироваться через форму или через социальную сеть. Если он выбирает регистрацию через форму, то здесь вам решать, какие данные запрашивать у пользователя. Если же пользователь выбрал социальную сеть, то мы получим, кроме имени, id пользователя в социальной сети. Полученный id  мы должны соотнести с id социальных сетей, хранящимися в таблице  socialdata. Если такой id уже есть, то мы авторизуем пользователя, а если нет, то мы просим пользователя ввести логин (псевдоним, e-mail или номер мобильного телефона). Далее мы должны проверить введенный логин, и если он есть у нас в базе, мы просим пользователя ввести пароль и привязываем данную социальную сеть к аккаунту. В обратном случае мы регистрируем пользователя.  Пароль мы можем сгенерировать или попросить пользователя ввести его самостоятельно. Оповестить пользователя мы сможем, отправив ему смс или письмо на e-mail. Теперь пользователь сможет заходить на сайт через социальную сеть или, введя логин и пароль.

Также в личном кабинете можно поместить кнопки входа через социальные сети, только в данном случае мы не будем требовать каких-либо данных, а просто проверим совпадение id, полученного от API социальной сети, с id в нашей базе данных. Если таких совпадений нет, то связываем социальную сеть с текущим аккаунтом.

Данная система поможет:

  • упорядочить аккаунты;
  • избежать дублирования пользователей и данных;
  • поддерживать принцип «Один аккаунт – один счет»;
  • ускорить систему регистрации.


Комментарии

Комментарии (0)

Ваш e-mail не будет опубликован.
Обязательные поля помечены *

ПОСЛЕДНИЕ КОММЕНТАРИИ

  • Эстония
    Tien
    : Is that really all there is to it because that'd be flaibergastbng.
  • Полезные советы новичкам WordPress
    Роман
    : В строке с "else if" в примере (на картинке) вроде не хватает одной закрывающей кавычки. И
  • Gekos красно-золотой
    Админ Блогович
    : ИЛИ выступлениями на внешних семинарах/конференциях
  • Gekos в Стамбуле: мы работаем там, где лето
    Денис
    : Очень крутая статья!
  • Как увернуться от гранаты или «Яндекс АГС – уберется все!»
    Рустем
    : Спасибо за кейс. На счёт хостингов - полностью согласен. Некоторые сайты расположены на ка
  •