Авторизация через профили социальных сетей. Вход с помощью социальных сетей. Как работает вход через соцсеть

Уже достаточно давно многие сайты предоставляют наряду со стандартной авторизацией, авторизацию через социальные сети и веб-сервисы. Перед вами стоит выбор:

  1. Пройти относительно длинный путь регистрации - ввод email/пароля/капчи и активация по email.
  2. Просто нажать на иконку социальной сети, в которой у вас заведён аккаунт, и подтвердить доступ.
А почему бы вообще не отказаться от стандартного механизма регистрации? Кстати именно такой подход и реализован на веб-сервисе on{X} от Microsoft - авторизация только через Facebook.

Но не всё так радужно, как может показаться на первый взгляд. Выделим положительные и негативные стороны социальной авторизации с учётом того, что мы собираемся полностью отказаться от регистрации по комбинации email/пароль.

Достоинства:

  • Быстрая авторизация на сайте.
  • Данные о пользователе от провайдера авторизации.
  • Отсутствие паролей.
  • Отсутствие активации аккаунта.
  • Единственная форма - форма авторизации.
Недостатки:
  • Некоторые провайдеры авторизации не отдают email.
  • Разный формат предоставляемых данных о пользователе.
  • Предпочтения аудитории.
  • Можно забыть через какой сервис проходил авторизацию.

С достоинствами этого подхода всё ясно. Нас же больше интересуют недостатки и пути их решения.

Недостатки

Некоторые провайдеры авторизации не отдают email
Да, самая важная информация, которую нам надо знать о пользователе, у некоторых провайдеров может быть недоступна. В частности Вконтакте и Одноклассники в общедоступном API не отдают его. Facebook и Google более лояльно относятся к email адресу и с помощью определённых разрешений успешно вернут вам эту информацию.
Решение:
  1. Одно из популярных решений проблемы - просто спросить его у пользователя после авторизации. Это добавит дополнительный диалог и придётся делать процедуру активации.
  2. В зависимости от целевой аудитории отказаться от провайдеров авторизации, которые не отдают email.
  3. Не использовать электронный адрес. Опять же не везде можно так легко отказаться от практически единственного средства обратной связи с пользователем. Допустим соц. сеть Вконтакте использует для регистрации номер мобильного телефона. Тут нужно подумать о том - как пользователь восстановит доступ к сайту, если он удалит аккаунт в социальной сети.
Разный формат предоставляемых данных о пользователе
Иногда требуется знать о пользователе немного больше, чем просто идентификатор в соц. сети. К таким данным могут относиться: имя, фамилия, ник, пол, аватар, дата рождения. Так как протоколы OAuth и OpenID не предназначены для получения каких-либо данных о пользователе, то придётся использовать API каждого конкретного сервиса и возвращаемые данные будут везде разные. В частности провайдеры авторизации Google, Вконтакте, Facebook и Одноклассники предоставляют все перечисленные выше данные. Осталось их только обработать.
Решение: если очень нужны дополнительные данные о пользователе - сделайте их запрос у сервиса авторизации. Если нужно ещё более специфичные данные - попросите пользователя ввести их самостоятельно после авторизации.
Предпочтения аудитории
Ну, вот мы и добрались до самого проблемного вопроса - а не отобьёт ли такой отказ от стандартной регистрации вашу целевую аудиторию? Моё мнение по этому поводу такое: даже если человек наотрез не хочет проходить авторизацию через социальные сервисы, но альтернатив вашему сервису нет, то он в конечном итоге сдастся. Я же лично придерживаюсь такого алгоритма: если я планирую пользоваться каким-то конкретным сервисом в будущем, то я обязательно регистрируюсь там через логин и пароль. Если же на сайте не будет такой возможности, то я буду авторизоваться через соц. сети.
Даже если пользователя нет в социальных сетях, то у него по любому должен быть почтовый аккаунт gmail, mail.ru или других сервисов. Следовательно, случай, когда у пользователя просто нет ни одного аккаунта у предоставляемых сервисов авторизации, маловероятен.
Можно забыть через какой сервис проходил авторизацию
Если ваш ресурс даёт возможность авторизоваться через over9000 провайдеров, а у пользователя есть как минимум 2 аккаунта у этих провайдеров, то он может просто забыть каким конкретно способом он входил на сайт. В случае ошибки будет создана никому не нужная запись о новой регистрации в БД.
Решение: записать в cookies сервис авторизации и выделять его на странице входа. Возможно, это создаёт какую-то угрозу безопасности, но я не могу сходу придумать, как можно серьёзно этим воспользоваться.

Заключение

Идея отказа от обычной регистрации очень соблазнительна, но всё зависит от того сможете ли вы избавиться от описанных проблем.

P.S. Немного статистики от uLogin можно прочитать

С помощью аккаунта в социальной сети ВКонтакте, Одноклассники, Mail.ru, Facebook, Twitter или Google можно авторизовываться на Яндексе без регистрации и ввода пароля. Для этого достаточно нажать логотип вашей социальной сети на форме:

Пример авторизации через Facebook

После нажатия на логотип откроется новое окно, в котором будет проходить дальнейший процесс авторизации на Яндексе. После того, как вы в первый раз пройдете описанные ниже шаги, вы сможете входить на Яндекс одним нажатием на этот логотип.


Использованный аккаунт Facebook появится на странице в Яндекс.Паспорте, а на сервисах Яндекса будет отображаться имя, полученное из социальной сети.

Вопросы и ответы

Зачем заводить логин и пароль на Яндексе?

Логин и пароль на Яндексе могут быть необходимы для доступа к некоторым сервисам - например, для использования Почты или Диска.

Что делать, если я забыл пароль от социальной сети и не могу войти на сервисы Яндекса?

Как назвать сотруднику службы поддержки Яндекса свой логин

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



Безопасна ли авторизация через социальную сеть?

Кроме того, в любой момент вы можете заблокировать доступ Яндекса к вашему профилю: просто удалите его со страницы .

Некоторые пользователи жалеют, что ещё никто не придумал социальные сети без регистрации. Преимуществ у таких проектов было бы много, но и недостатков масса. А самое главное, никто бы не смог вести свою страницу. Именно по этой причине никто их не создает, но при необходимости можно пользоваться, не регистрируясь.

Использовать можно любые подобные сети. Конечно, функционал будет ограниченным, но найти человека, проверить, когда он был в онлайне или посмотреть какое-нибудь видео легко. Для этого не требуются программы и расширения браузеров, открытый доступ предоставляется всем.

Как зайти на Вконтакте или Одноклассники без регистрации?

Если основная задача перехода на соц. сети не регистрируясь – это поиск людей, то намного проще воспользоваться специальным сервисом от Яндекса. Перейдите по ссылке yandex.ru/people и вы попадете в специальный поиск по людям. Достаточно указать имя и фамилию, чтобы получить список:

Чтобы поиск был точным, можно ввести дополнительные данные, а также выбрать определенные соц сети. На Одноклассниках, да и во многих других социальных сетях страницы не скрыты от незарегистрированных пользователей, поэтому открывайте любой профиль:

Аналогичным образом можно провести поиск в любых других соц. сетях. При использовании Вконтакте можно и не переходить на Яндекс.Люди. Там поиск по пользователям открыт для всех. Введите в адресной строке vk.com/search и откроется нужная вам страница:

В главной строке можно указать имя и фамилию, а через боковую панель указываются дополнительные данные:

У некоторых людей страницы скрыты от общего доступа, но чаще всего они открытые. Поэтому вы без проблем сможете посмотреть фотографии, видеозаписи, посты на стене, статус и многое другое.

Одноклассники без регистрации

Просто перейдите на этот сайт и на главной странице вы увидите популярные записи и видеоролики:

Не регистрируясь, можно переходить в любые сообщества и смотреть посты. При попытке написать комментарий или вступлении в группу, вы попадете на страницу авторизации.

Посещайте соц сети, несмотря на ограниченные функции, вы всё равно сможете просматривать профили и почти весь контент. Если этого вам будет недостаточно, но вы не хотите пользоваться своим профилем, то лучший вариант – это создание дополнительной страницы. Нет свободного номера телефона? Купите готовый аккаунт на Buyaccs.com. В этом интернет-магазине продаются профили почти от всех соц. сетей:

Стоимость зависит от того, насколько заполнен аккаунт и сколько на нем друзей. Оплачивать можно любыми способами, с банковских карт, электронными деньгами и даже перевести с баланса телефона (через Робокассу). Потратив немного денег, вы получите профиль и сможете использовать социальные сети без регистрации.

Такими сайтами как Вконтакте, Одноклассники, Facebook и Twitter пользуются в различных целях, но нельзя забывать, что все они подходят для удаленной работы. Узнайте и пользуйтесь ими, выполнив простейшие действия, вы легко получите небольшие деньги, чтобы купить себе аккаунты или оплатить мобильную связь.

В данной инструкции мы рассмотрим, как настроить авторизацию через следующие социальные сети:

Если вы хотите создать свое приложение для авторизации пользователей, воспользуйтесь инструкциями ниже. При запросе разрешения на авторизацию это позволит вывести свой логотип и название сайта вместо значений по умолчанию:

ВКонтакте

Нажмите на кнопку «Создать приложение». Откроется страница входа в аккаунт «ВКонтакте»:

Придумайте название приложения и нажмите на кнопку «Создать». На новой странице укажите подробную информацию о приложении. Она будет отображаться при регистрации пользователей (запросе разрешений):

После сохранения изменений перейдите в настройки приложения и скопируйте «ID приложения» и «Защищенный ключ»:

Скопированные значения укажите в панели управления сайтом и нажмите на кнопку «Сохранить»:

Теперь вернитесь к настройкам приложения на сайте «ВКонтакте» и заполните данные:

  • «Open API» - включен;
  • «Адрес сайта» и «Базовый домен» - ваш прикрепленный домен.

Приложение готово к использованию. Выполните авторизацию с помощью социальной сети «ВКонтакте» и проверьте, как отображаются указанные в приложении данные.

Facebook

Нажмите на кнопку «Создать приложение» и на открывшейся странице выполните вход в личный кабинет социальной сети Facebook.

Затем нажмите на кнопку «Зарегистрироваться»:

Для регистрации потребуется подтвердить аккаунт, указав номер телефона:

Заполните анкету приложения и нажмите на кнопку «Создайте идентификатор приложения»:

Скопируйте «Идентификатор приложения» и «Секрет приложения». Их нужно указать в панели управления сайтом в полях «Client ID» и «Client secret» соответственно:

Из панели управления скопируйте «Redirect URIs»:

Теперь на сайте разработчиков Facebook выберите пункт «Настройка» в левом меню и на открывшейся странице перейдите на вкладку «Дополнительно»:

На странице найдите «Действительные URL-адреса для перенаправления OAuth» и вставьте в поле полученный ранее URL:

Яндекс

Нажмите на кнопку «Создать приложение» и на открывшейся странице выполните вход в личный кабинет «Яндекса». После авторизации заполните форму нового приложения:

Установите следующие права для приложения:

  • Доступ к дате рождения;
  • Доступ к адресу электронной почты;
  • Доступ к логину, имени и фамилии, полу.

Скопируйте из панели управления сайтом «Callback URI», укажите его в поле «Callback URL» приложения и нажмите на кнопку «Сохранить»:

Скопируйте ID и пароль приложения:

Укажите эти данные в панели управления сайтом:

Приложение готово к использованию.

Google+

Нажмите на кнопку «Создать приложение» и на открывшейся странице выполните вход в личный кабинет социальной сети Google+.

На открывшейся странице выберите «Google+ API»:

Чтобы включить API, нужно создать проект. Нажмите на кнопку «Создать проект»:

Заполните анкету проекта, примите условия использования, после этого нажмите на кнопку «Создать»:

Теперь можно включить API:

И приступить к созданию приложения:

Создание приложения состоит из четырех шагов:

1. Выбираем тип учетных данных:

2. Создаем идентификатор клиента OAuth 2.0, указываем адрес домена и разрешенный URI перенаправления (скопированный из панели управления):

3. Заполняем информацию о приложении - она будет показана пользователю при регистрации:

4. Нажимаем «Готово»:

Наше приложение готово к работе. Зайдем на его страницу. Для этого нажмите в левой колонке на «Учетные данные» и выберите приложение из списка:

Скопируйте идентификатор и секрет клиента, чтобы указать их в панели управления сайтом:

Twitter

Нажмите на кнопку «Создать приложение» и на открывшейся странице выполните вход в личный кабинет социальной сети Twitter. Для создания приложения потребуется ввести и подтвердить свой телефонный номер (

Есть полезная конкретная информация о технической реализации.

А если вкратце, то...

Для авторизации, регистрации используется все та же таблица "users". Вместе с обычной регистрацией и авторизацией, когда при регистрации (в самом простом виде) в таблицу "users" добавляются email, password и login пользователя, а при авторизации проверяется соответствие введенных login"а и password"а существующим в базе данных, аналогичным образом используется и регистрация/авторизация через социальные сети. Только в данном случае источником данных о пользователе для его регистрации является не непосредственный пользователь, который вводит данные в форму, а соц. сеть. Регистрация в данном случае достаточно прозрачная, т.е. не видна пользователю. Схема примерно следующая (без особенностей работы Oauth-протокола):


1) Пользователь выбирает вход через соц. сеть.
2) Происходит обращение к странице авторизации в этой соц. сети, если человек еще не авторизовывался там. После ввода данных, а если он ранее авторизовывался, происходит запрос на разрешение использования его данных.
3) Если человек отказывается, то на этом конец. Если дает согласие, то выполняется перенаправление на указанную в настройках Oauth страницу сайта.
4) У каждого пользователя в соц. сетях есть свой уникальный идентификатор, который можно запрашивать. Для своей таблицы "users" нужно добавить пару дополнительных полей (например, вот такие): auth_via (enum("native, "vk", "mailru", "...")) - для обозначения типа регистрации пользователя, и social_id - здесь будет храниться уникальный идентификатор в соц. сети. Если нужно хранить какие-то специфические данные этого пользователя из соц. сетей, то можно создать доп. поля для этих данных.
5) После того, как пользователь дал разрешение на использование его данных, необходимо запросить нужные данные от соц. сети, в т.ч. и идентификатор пользователя в соц. сети. Вот здесь и начинается невидимый процесс регистрации. Нужно проверить есть ли в БД пользователь с таким social_id, если нет, то вставляем social_id, данные пользователя из соц. сети, по необходимости, в БД. Все, пользователь зарегистрирован.
Если же данные о пользователе есть, то необходимо запросить актуальные данные из соц. сети, сравнить их с теми, что в базе и если они изменились, то обновить их и в своей базе данных, если нет, то просто переходим к следующему шагу.
6) Создается сессия с данными пользователя.

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

Для пользователя, зарегистрированного из соц. сети пароля и логина, естественно, нет. Они нужны для авторизации. А т.к. пользователь авторизуется с помощью своих логина и пароля в соц. сети, то и указывать здесь нечего. И еще, можно при авторизации, к запросу проверки логина и пароля, добавить условие

"AND WHERE `auth_via`="native""

Чтобы исключить пользователей, зарегистрированных из соц. сетей.

Как видно, для каждого пользователя в таблице создается внутренний (внутрисайтовый, если так можно выразиться) первичный, автоинкрементный ключ. Соответственно, нет разницы для логики сайта между пользователем, зарегистрированным через соц. сеть и через сайт. Если говорить об интернет-магазине, то, для привязки заказов к пользователю, можно использовать единый, внутренний идентификатор ID.