Надеюсь, вы уже успели насладиться ими. Расскажу, как непросто было их сделать.
Как вы, наверное, заметили, комментарии тут сделаны на базе аутентификации через OpenID aka OpenID consumer. Эта функциональность входит все в тот же плагин OpenID, о котором я уже писал, нужно только поставить соответствующие галочки в настройках. Однако после этого начинается самое интересное.
Во-первых, стандартная форма для комментариев, предлагаемая этим плагином, страшна, как смертный грех. Кроме того, она предполагает вбивание вручную полностью OpenID идентификаторов, которые у некоторых провайдеров могут быть довольно длинными. Для решения этой проблемы служит другой плагин: Comments with OpenID. У него есть красивые иконки для большинства известных OpenID провайдеров, нажимая на которые, можно получить заготовку идентификатора, в которую остается только вбить имя пользователя. Плагин пришлось форкнуть и поправить из-за LiveJournal. Эти орлы сломали у себя OpenID, хотели запретить OpenID аутентификацию только для переименованных аккаунтов, а в результате поломали для всех. Поэтому я удалил их иконку, пока не починят. Еще я заменил шаблон OpenID идентификатора для Google, чтобы получалась красивая ссылка на профиль.
Далее возникли проблемы с получением имени пользователя. Как известно, протокол OpenID помимо непосредственно аутентификации содержит различные расширения, позволяющие, в частности, запросить имя пользователя, его email, домашнюю страницу и т.д. И если с аутентификацией у всех провайдеров все более или менее хорошо, то дополнительные атрибуты все отдают по-разному.
Например, Google не отдает свойство namePerson, а отдает два отдельных поля namePerson/first и namePerson/last. А mail.ru так вообще нарушает спецификацию и не передает необходимый параметр openid.ns.sreg. По этому поводу я, кстати, написал им в техподдержку; на результат, правда, особо не надеюсь. В общем, все эти мелочи я поправил опять-таки в своем форке плагина openid. Самые приличные комиты послал автору, надеюсь, включит в очередную версию, а остальной трэш типа заплатки для mail.ru поместил в отдельную ветку wip (work in progress).
Кроме того, я добавил в плагин возможность требовать обязательного наличия OpenID. Нужно поставить новую галочку в настройках «Require OpenID authentication».
Ну и вставил немного русского перевода. Русский перевод хорошо бы сделать полностью и отослать автору, там работы-то на пару часов.
В общем, как это обычно бывает, объединение якобы открытых систем на базе якобы открытых протоколов оказалось делом хлопотным.
А где же «кошерный» Facebook? =)
Дык facebook, вроде, не предоставляет openid provider, у него свой API.