Приветствую всех! Сегодня я хотел бы рассказать об аутентификации пользователей с помощью различных социальных сервисов. Большой проблемы здесь, конечно, нет. На официальных сайтах вы легко найдете документацию для разработчиков (обычно с примерами) и сможете начать работу. Более того, сервисы вроде Facebook предлагают готовые решения, которые достаточно просто подключить к сайту и не разбираться с протоколом обмена данными. Но если вам нужно обеспечить поддержку максимально большого количества сервисов, то объем работы резко возрастает. Но недавно я наткнулся на один очень интересный сервис под названием Loginza, предназначенный для решения именно этой задачи. И хочу показать небольшой пример работы с ним. Честно говоря, раньше я думал, что подобные сервисы предоставляют услуги на платной основе либо с довольно урезанным функционалом (пример). Поэтому очень приятно было найти бесплатный аналог, да и к тому же с поддержкой социальных сетей рунета. Примечание. Вообще-то Loginza появилась в 2008, но почему-то не попала в поле моего зрения. На данный момент поддерживается 20 различных сервисов (судя по информации на официальном сайте). Но у меня после установки виджета появились только 17 кнопок.
Хотя, все основные сервисы рунета присутствуют. Прежде чем переходить к примеру, хочу немного рассказать о том, что даст вам аутентификация с помощью сторонних сервисов. Если вы знакомы с протоколами OpenId и OAuth, можете спокойно эту часть пропустить. Если не вдаваться в детали, то такая аутентификация позволит вам определить, что посетитель является владельцем аккаунта на каком-то сервисе. И получить некоторое количество информации о нём. Какое именно количество информации вы получите, зависит от сервиса и от самого пользователя. Обычно это данные, которые можно посмотреть в профиле пользователя. Технически процедура аутентификации происходит следующим образом. 1) Посетитель на вашем сайте нажимает кнопку «Войти с помощью …» и попадает на сайт выбранного сервиса. 2) На этом сайте он должен будет ввести логин и пароль (если он не выполнил вход ранее) и затем подтвердить, что вашему сайту можно передавать информацию из его аккаунта. При этом большинство сервисов подробно объясняет какая информация будет передана. 3) Затем происходит редирект посетителя на ваш сайт и при этом передаётся специальный идентификатор (токен) с помощью которого можно получить данные от сервиса. 4) Дальнейшие действия зависят от вас. Пользователь аутентификацию прошел, поэтому нужно будет создать для него сессию и, возможно, аккаунт на вашем сайте. Данные для создания аккаунта вы получаете от сервиса, с помощью которого была выполнена аутентификация. Это очень упрощенное описание принципа работы всей системы. Но, думаю, даже из него ясны основные достоинства такого метода аутентификации. Пользователь не заполняет никаких форм на вашем сайте, но при этом передает вам данные о себе. И в тоже время он не вводит логинов и паролей от сторонних сервисов на вашем сайте. Теперь возвращаемся к примеру, который я обещал. Прежде всего, создадим обычную html страничку (index. html) со ссылкой «Войти, используя виджет Loginza». Выглядеть она может, например, так.