Open ID — комментируем livejournal от имени автономного блога

Для справки: создатель технологии OpenID и блогосервиса livejournal — одно и то же лицо, поэтому, логичной является возможность комментировать блоги в ЖЖ от имени OpenID аккаунта не заводя полноценный журнал в этом сервисе. При этом любопытные читатели при клике на ваш ник около оставленного вами комментария попадают не на ваш блог в ЖЖ (которого может и не быть), а… а вот куда они попадут зависит от вас. По умолчанию в комментариях будет ссылка на Open ID сервис, который вы использовали для входа. Например, ваш_никнейм.myopenid.com (если вы используете провайдер myopenid.com), где можно будет увидеть ваш профиль, в том числе и адрес вашего сайта. Но благодаря делегированию Open ID можно сделать так, чтобы ссылка в вашем комментарии вела прямиком на ваш блог. Вот так это может выглядеть:




Как все это сделать и какие проблемы могут возникнуть?

Считаем, что у вас есть свой автономный (или не очень) блог, который вы хотите использовать как openid сервер при комментировании, и вы можете редактировать html код (шаблон) главной страницы.
Для начала необходимо зарегистрироваться у openid провайдера, который поддерживает делегирование. До сегодняшнего дня у меня это был myopenid.com, но сегодня он уже почти день как не работает из-за каких то проблем, поэтому я начал использовать openid сервис от Yandex. Нужно просто иметь почту на Яндексе для того, чтобы использовать его openid возможности. Итак, если вы зарегистрировались на Yandex.ru, то вы можете почитать информацию про openid возможности на странице http://openid.yandex.ru/.

UPDATE 2015: Яндекс прекращает поддержку своего сервиса Open-ID. Прочтите чем заменить.


Второй этап состоит в том, чтобы добавить в html код заглавной страницы (или всех страниц вместе с заглавной) определенный код, который перенаправит ЖЖ с вашего блога на выбранный вами openid сервис. Попытаюсь пояснить логику авторизации: вы хотите войти в ЖЖ через openid, который является адресом вашего блога;







ЖЖ заходит на ваш блог и видит специальное указание, что openid нужно искать на другом сервере; вам показывается страничка авторизации вашего openid провайдера с сообщением о том, что вы авторизуетесь на livejournal;



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

Код, который нужно добавить в шаблон страницы вашего блога между <header> и </header>:

1) В случае, если вы выбрали в качестве OpenID провайдера Yandex

<link rel="openid.server" href="http://openid.yandex.ru/server/" />
<link rel="openid2.provider" href="http://openid.yandex.ru/server/" />
<link rel="openid.delegate" href="http://openid.yandex.ru/vash_login/" />
<link rel="openid2.local_id" href="http://openid.yandex.ru/vash_login/" />

2) В случае, если вы выбрали myopenid.com

<meta http-equiv="X-XRDS-Location" content="http://www.myopenid.com/xrds?username=vash_login.myopenid.com" />

<link rel="openid.server" href="http://www.myopenid.com/server" />
<link rel="openid.delegate" href="http://vash_login.myopenid.com/" />
<link rel="openid2.local_id" href="http://vash_login.myopenid.com" />
<link rel="openid2.provider" href="http://www.myopenid.com/server" />

где вместо vash_login нужно вписать ваш логин на Yandex или myopenid.

Если все прошло удачно, то при первом заходе в ЖЖ через openid создастся служебный аккаунт ЖЖ (внутреннее название) вида ext_844953, с ним как бы связан пустой журнал ext_844953.livejournal.com, в который нельзя зайти и в который нельзя писать записи. Но ЖЖ профиль у openid аккаунта тем не менее имеется! Желательно зайти туда и заполнить его информацией:




И в итоге вы получаете аккаунт ЖЖ, который с одной стороны неразрывно связан с вашим автономным блогом, а с другой позволяет заводить друзей в ЖЖ, вступать в сообщества, читать френдленту и оставлять комментарии со ссылкой на ваш блог.



Теперь о проблемах связки Open-ID + ЖЖ.

Не все OpenID провайдеры корректно работают с делегированием. Те сервисы, которые я привел (Yandex и MyOpenid) позволяют проделывать то, о чем я выше рассказал. Другие openid провайдеры — может могут, а может и нет.

Если вы делаете все так, как написано, но ЖЖ упорно не желает авторизовываться проверьте не забанил ли livejournal IP вашего хостинга? У меня как раз был именно такой случай: ЖЖ забанил IP сервера, на котором был расположен мой блог. После того, как хостер перенес мой сайт на другой сервер, который не был забанен, все заработало.

Как проверить забанен ли ваш хостер? Скачать этот php скрипт, распаковать, залить его к себе на сайт и выполнить. Если выдаст «ok» значит все нормально, если выдаст «bad», то, соответственно, ваш хостер забанен и нужно разбираться (в этом случае также не работают плагины кросспотинга в ЖЖ).

Сегодня myopenid не работает, но это не оказалась проблемой для входа в ЖЖ. Я просто поменял код на сайте так, чтобы использовать openid от Yandex вместо myopenid и вошел как обычно в свой openid аккаунт (тот же самый ext_844953), который привязан к моему блогу, а не к openid сервису, которым я пользуюсь. Это важно.

Сервис авторизации Loginza не корректно работает с делегированием openid и при входе возникает ошибка. Вообще, openid как бы есть и распространен, но у всех работает совершенно по разному.

В большинстве ЖЖ журналов комментарии от openid аккаунта по умолчанию попадают в «подозрительные». На некоторых популярных журналах (navalny, mymaster) параноидальный антиспам отключен и openid комментарии добавляются без проблем. Для того, чтобы нормально общаться с использованием openid аккаунта в ЖЖ есть два пути:

1) Попросите добавить вас в друзья того, кому вы хотите писать комментарий. Добавьте его и сами в свои друзья, с вас не убудет.
2) Более кардинальный метод: если вы адекватный человек и заводите аккаунт для нормального общения подайте заявку на вступление в сообщество notaspammer. Заявку рассматривают обычно долго, несколько дней. Если вас сочтут живым адекватным человеком и запрос на вступление в это сообщество будет одобрен, то вы сможете свободно комментировать большинство журналов и без того, чтобы их владельцы вас добавляли в друзья. Исходя из этого не рекомендую подавать заявку в notaspammer сразу же первым делом. Сначала заведите друзей, пообщайтесь (как бы вас не задалбывала надпись о том, что ваш очередной коммент попал в спам!) не стесняйтесь писать в личные сообщения с просьбой вынуть ваш комментарий из спама или взять вас в друзья для нормального комментирования.

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

Если вы попробуете таким же образом использовать адрес вашего блога в качестве OpenID для авторизации на других сайтах (не livejournal) будьте готовы к тому, что URL, связанный с вашим аккаунтом будет не адресом вашего блога, как это происходит в ЖЖ, а будет адресом вашего openid провайдера, которому вы делегировали вход ( ваш_ник.ya.ru или ваш_ник.myopenid.com ). Повторяюсь, не все сайты нормально и одинаково работают с OpenID.

Для владельцев блогов на платформе blogspot (blogger) от Google

Вы точно также можете использовать адрес вашего блога для входа в Livejournal через OpenID. Никаких дополнительных манипуляций с html кодом и регистрацией на openid провайдерах проводить не нужно!

Входим в ЖЖ через OpenID:




Вбиваем адрес вашего блога на blogspot:



Говорим да:



Вот мы и внутри livejournal со своим блогом на blogspot:


Внимание!
Я не знаю, опасно ли переходить с базового аккаунта, который дается при open-id авторизации на улучшенный. Возможно при этом просто создастся обычный ЖЖ-журнал, так что все усилия по тесной интеграции автономного блога с ЖЖ будут напрасными. Именно поэтому я остаюсь на базовом аккаунте.

PS Конечно же я в курсе про существование WordPress плагинов openid и XRDS Simple, которые помимо прочего должны превращать ваш блог в самостоятельный OpenId провайдер без всяких там делегирований сторонним ресурсам типа Яндекса. Однако у меня они почему то не заработали.

Если вам понравился материал, пожалуйста, поделитесь им с друзьями: