Никогда не говорите слово …, или регистрация в 2 щелчка мышью

Люди не очень любят регистрироваться. Это же нужно (в общем случае) придумать логин и пароль, зайти в свою почту, дождаться письма, открыть его, перейти по ссылке активации аккаунта, а потом еще этот логин с паролем не забыть. Но ведь уже давно есть способ, с помощью которого все эти шаги не нужны. Более того, не нужно вообще ничего вводить с клавиатуры, 2 щелчка мышью и все, человек зарегистрирован.

Какой самый распространенный элемент в todo стартапов? Думаю, что-то вроде этого: "В планах - сделать вход по OpenID". Почему этого не делают? Потому что как-бы незачем. Никто про OpenID не знает, никому он не нужен. У меня сложилось впечатление, что вход или регистрацию по OpenID обычно делают для того, чтоб показать технологическую продвинутость проекта. А ведь OpenID может быть крайне полезной штукой, упрощающей людям жизнь и увеличивающей число пользователей ресурса. Дальше - мое видение того, как правильно применять эту технологию.

Факты

Для начала - факты:

  1. Пользователи почты yandex.ru, rambler.ru и gmail.com в сумме покрывают очень большой процент пользователей рунета. Из почтовых сервисов тут не хватает только mail.ru.
  2. Yandex.ru, rambler.ru и gmail.com являются провайдерами OpenID 2.0.
  3. Для аутентификации через OpenID 2.0 не нужно вообще ничего вводить с клавиатуры, если сайту известен провайдер OpenID и пользователь авторизован у этого провайдера. В OpenID 2.0 адрес сервера един для всех пользователей (в url'е нигде не фигурирует имя пользователя).
  4. Пользователи не знают (и не хотят знать), что такое OpenID. Ну может 1% где-то слышал, что это есть такая непонятная штука для гиков.

Что из этого следует

В России (и в СНГ) вполне можно учитывать только 3х провайдеров OpenID: вышеупомянутых яндекс, гмейл и рамблер. Если предоставить пользователям выбор из этих 3х провайдеров, то с большой долей вероятности где-нибудь у человека будет аккаунт. Пользователь выбирает своего провайдера из этих 3х (1 щелчок мышью) - у сайта теперь есть информация о том, какой url использовать для аутентификации по OpenID. После этого можно провести обычную процедуру аутентификации по OpenID. Если пользователь авторизован у провайдера, то он подтверждает аутентификацию (еще 1 щелчок мышью). Если нет, то авторизуется (это у всех по-разному, в лучшем случае - 1 щелчок мышью, логин и пароль подставил браузер), потом подтверждает аутентификацию.

Что мы имеем: первичную аутентификацию в 2 щелчка мышью (если пользователь авторизован в своей почте). При этом сайт может пользователя или зарегистрировать, или авторизовать. Дополнительные данные для регистрации (если необходимо) сайт может получить через SREG, hCard, ax, что-то можно выудить из логина openid (для всего этого со стороны пользователя не нужно выполнять никаких действий). Если что-то нужно заполнить еще, то тогда уже спрашивать у пользователя дальше. Заметьте, спрашивать нужно будет потенциально меньше, чем при обычной регистрации.

Повторные логины будут происходить за 1 щелчок мыши (если пользователь нажал "запомнить связь" при аутентификации), как и в случае с автозаполнением пары логин-пароль браузером. Ну и, понятно, куки для запоминания авторизации пользователя никто не отменял.

Интерфейс

Теперь насчет интерфейса.

Мне кажется, учить пользователей, что такое OpenID - дохлый номер. И стоит исходить из того, что даже просто употребление незнакомого слова "OpenID" может отпугнуть обычного человека. У среднего пользователя есть почта и аккаунт во вконтакте или на одноклассниках, все. В том, что моя сестра не хочет въезжать в какие-то непонятные штуки со странными названиями (такие, как OpenID), нет ничего плохого, это абсолютно нормально. Большинство людей, думаю, вообще никогда не узнает, что такое OpenID. Из этой предпосылки предлагаю и строить пользовательский интерфейс.

Вот мой вариант такого интерфейса:

http://kmike.ru/img/buttons.png

Собственно говоря, это и есть форма регистрации/авторизации на сайте http://pip.ec . Пользователю не нужно проверять почту, активировать аккаунт, придумывать логин и пароль. Более того, в удачном случае не нужно вообще ничего вводить с клавиатуры, 2 щелчка мышью и все, человек зарегистрирован.

Но все это теория, которая может вызвать разные вопросы (не испугаются ли люди перехода на другой сайт, будут ли нажимать "авторизовать" и т.д.), на которые ответить может только практика. Так что же на практике?

Практика

Кроме регистрации по OpenID на сайте pip.ec сделана и возможность обычной регистрации. Статистика такая: с помощью OpenID зарегистрировано больше людей, чем обычным способом. На сайте нет ни единого упоминания слова OpenID. Людей, регистрирующихся обычным способом и имеющих почту на гмейле, яндексе или рамблере - вообще единицы. Из тех, кто регистрируется обычным способом, половина - пользователи mail.ru.

Выводы

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

Реализация, технические подробности

Насчет реализации. Во-первых, небольшная справка, адреса провайдеров openid:

  • Google: https://www.google.com/accounts/o8/id
  • Yandex: http://openid.yandex.ru/
  • Rambler: http://rambler.ru/

Во, вторых, насчет библиотек для работы с openid. Уверен, что для разных языков есть множество библиотек, поддерживающих OpenID 2.0, если в комментариях их напишут - сюда добавлю. У меня же все написано на джанго, код немного специфичный и в отдельное приложения я его не выделял. Для джанго предложил бы попробовать новый проект, который написал Александр Коваль (сам не пробовал), или вот это хорошее приложение: django-authopenid, или вот это: scipio.

В-третьих, всем интересующимся очень рекомендую блог и форум про OpenID у Ивана Сагалаева (который, к слову, тоже зарелизил правильный openid-консумер для python/django). Если что-то про OpenID не ясно, почитайте оттуда статью: OpenID: мифы и суеверия, на нее уже была как-то ссылка на хабре.

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

И еще, обращение к команде mail.ru. Вдруг кто-то из них статью прочитает. Пожалуйста, станьте провайдером OpenID 2.0. Рано или поздно разработчики просекут фишку и станут более массово делать сайты с тремя кнопками "яндекс, гмейл, рамблер". Всем: и mail.ru, и пользователям, и разработчикам будет лучше, если вместо 3х кнопок будет 4: "яндекс, гмейл, мейл, рамблер".

Если вам тоже кажется, что было бы здорово, чтоб mail.ru стал провайдером OpenID 2.0, можно еще написать побольше писем в техническую дирекцию mail.ru, адрес есть тут: http://corp.mail.ru/contacts.html

Warning

mail.ru теперь провайдер OpenID, писать никому не нужно больше.

Note

Все было сначала опубликовано на хабре: http://habrahabr.ru/edit/topic/67774/