OpenID - несомненно, полезный механизм как для пользователей, так и для владельцев сетевых ресурсов.
Пользователям он даёт:
Возможность запомнить один логин и один пароль и использовать его везде
Не нужно каждый раз вводить одни и те же данные. В идеале каждый сайт будет требовать только ввода данных, специфичных именно для этого сайта
Не нужно регистрироваться. Хотя часто это недолго (несколько минут), но регистрироваться на каждом сайте напрягает
Для владельцев сайтов тоже есть преимущества:
Т.к. это удобнее пользователю, больше пользователей будет регистрироваться
Возможность получить данные пользователя, которые в другом случае он поленился бы вводить (хотя и не скрывает)
В перспективе - возможность обновления данных о пользователе (как контактной информации, так и информации о его связях, вкусах и т.д. и т.п.)
Благо, сейчас достаточно хороших библиотек для работы с OpenID и достаточно OpenID-провайдеров (в том числе многие социальные сети), чтобы эта фича была востребована на сайте.
Сейчас я расскажу и покажу, как за пару часов добавить поддержку OpenID к существующему сайту. Я не рассматриваю случаи, когда сайты построены на основе популярных движков (вроде WordPress или Drupal), для которых существуют плагины, делающие за вас всю работу. Речь будет идти о сайте в самом общем случае.
Эту статью я решил написать после подключения OpenID к своему сайту maskas.ru, на котором можно посмотреть рабочую версию того, что я сейчас покажу.
Работать это, как и сам сайт, будет на PHP с использованием библиотеки PHP OpenID Library.
Предполагается, что на сайте уже есть таблица с пользователями, которая используется как основное хранилище данных о них.
Архив со всеми скриптами, которые будут использоваться, можно скачать с меня: здесь.
Итак, приступим.
1
Для начала скачайте библиотеку и перенесите папочку Auth туда, где php-скрипты смогут найти её при использовании include.
2
Теперь создадим таблицу связей OpenID-идентификаторов с пользователями.
CREATE TABLE `openid_user_ref` (`openid` varchar(255) NOT NULL,`user_id` int(11) NOT NULL,PRIMARY KEY (`openid`))
<form method="get" action="openid_verify.php">OpenID: <input name="openid_url" type="text" /></form>
$sreg_request = Auth_OpenID_SRegRequest::build(// Requiredarray('nickname'),// Optionalarray('fullname', 'email','gender'));
Из всех способов сетевой коммуникации мы предпочитаем работу по электронной почте. Это позволяет отслеживать все этапы деловой переписки.
Пишите нам по адресу mail@tcse-cms.com
Мы в социальных сетях
Твиттер: twitter.com/tcsecms
Фейсбук: facebook.com/pages/TCSE-cms
Вконтакте: vk.com/public34349369