0,0
рейтинг
15 мая 2010 в 18:14

Разработка → Плагин авторизации через Вконтакте, Yandex, Google, OpenID и тп

В недавнем моем посте «Javascript виджет авторизации OpenID» на хабре, я описал свою разработку виджет-consumer авторизации OpenID.

Прошло время, я получил много положительных отзывов, получил замечания и пожеланию по улучшению виджета. Среди пожеланий развития была просьба создать WordPress плагин и добавить поддержку Вконтакте OpenAPI.

Рад Вам представить первую версию плагина. Плагин позволяет использовать для авторизации в блоге WordPress аккаунты популярных порталов (Yandex, Google, Rambler, Mail.Ru, LiveJournal и тп.), социальной сети Вконтакте и OpenID идентификаторы.

Текущая версия плагина 1.0.9, он доступен в репозитории плагинов на WordPress.org. Я рассчитываю на Ваши обратные отклики о плагине, как пользователей, которые помогут улучшить его в следующих версиях.

UPD:
— добавлены Twitter, Facebook, Last.fm;
— поддержка Wordpress 3.0.

Немножко скриншотов, визуально демонстрирующих возможности плагина:

image

image

image

image
Сергей Арсеничев @Arsenichev
карма
83,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (101)

  • 0
    В закладки! Полезно.
  • +4
    На сайте WP сделайте описание и скриншоты на английском. Получите в добавок англоязичную аудиторию к вашему сервису и плагину.

    • +4
      Спасибо, сделаем. Но прежде надо и сайт перевести.
    • +1
      англоязычной аудитории нафиг не нужен такой плагин без фэйсбука.
      • +2
        Фейсбук будет, так же как и твитер.
        • +3
          ну тогда рекомендую по geo определять откуда пользователь, и сортировать варианты в соответствии.
          • +3
            Отличная идея, учту.
            • 0
              А вот учитывать ее имхо, как раз не надо. Я часто на буржуйнетах да и на disqus комментариях авторизуюсь через твиттер\фб.
              Вконтакте это хорошо, но без твиттера+фейсбука идея обречена на провал.
        • 0
          Добавили фейсбук и твитер
  • 0
    Картинка loginza_relying_party_logo.png берётся из корня сайта. Поправьте, а то некрасиво как-то.
    Плагин однозначно must have, спасибо!
    • +2
      С картинкой что нибудь придумаю, наверно как настройку плагина в админке.
      • –1
        Вы не поняли. Не надо никаких настроек. Просто этой картинки нет там, где она ищется и получается битое изображение: habreffect.ru/files/e72/0ba938e3f/Clipboard01.jpg
  • 0
    Спасибо за такую полезность, думал сам велосипед изобретать, но вы меня опередили. ;-)
    зы уже использую в своем проекте, нареканий нет, все отлично.
  • 0
    Шикарный плагин — именно то, что нужно! Спасибо!
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Поясните пожалуйста, в loginza появилась авторизация Вконтакте? Нигде у них на сайте не могу найти о том что Вконтакте есть информацию. Собираюсь использовать loginza под другую CMS.
    • +1
      Да, виджет Loginza поддерживает авторизацию через ВКонтакте. Появилась она 1 мая.
      • 0
        Ага, написал им письмо, ответили что Facebook и Twitter еще будут добавлять
  • 0
    Отлично. Спасибо! Моя команда написала плагин для WP работа с АPI.Сайты.
    Как тесты закончим, выложу для скачки
  • 0
    а Drupal будет?
    • +1
      Любой более-менее толковый программер напишет. Тут нет ничего сверхъестественного. Просто нужен модуль который будет при первой авторизации через loginza создавать юзера в БД Drupal, а при дальнейших авторизациях- его подключать.
      • +2
        Да, кстати. Хороший ответ. Можно как пример взять данный код плагина. Я весь код разбавил подробными комментариями, будет легко понять что к чему.
        • 0
          Вот за это отдельное «Спасибо!»
  • +1
    Пока не разбирался в этом движке, но если будут желающие помочь, готов посопутствовать в разработке.
  • +1
    Логин везде по OpenID
    кроме Вконтакте, они через АPI

    сделайте Mail.ru тоже через API пжл
    • +2
      Расмотрим как вариант. Если будут плюсы от этого, сделаем.
  • –5
    Логин везде по OpenID
    кроме Вконтакте, они через АPI

    сделайте Mail.ru тоже через API пжл
    • –4
      mail.ru не нужен. самый говенный сервис из всех почтовиков. и приватность там никакая. никогда не поставлю к себе на проект мейлру-авторизовальщик даже если это придаст увеличения посещаемости.
      мейлру должен умереть. чем скорее — тем лучше.
      • 0
        «Не дождётесь!» ©
  • 0
    Ожидаемая в свете выхода Вконтакте API история. Спасибо.
    Из пожеланий: хочется, чтобы пользователь мог выбрать логин, который будет ему присвоен в Вордпрессе.
  • +2
    Пока не совсем понятно, можно ли одному пользователю сопоставить несколько разных OpenID.
    • +2
      В принципе в плагине эту возможность не сложно сделать, в след. версии учту это.
  • 0
    У меня не работает, после авторизации через Вонтакте страничка обновляется и ничего не происходит
    • 0
      У меня все в порядке, была проблема с моим WP
      • 0
        Не подскажете, что за проблема была? У меня, похоже, такие же симптомы :-)
        • 0
          У kabachok было 2 проблемы:
          — на сервере не стоял json php (неработала правильно функция json_decode());
          — не все файлы WP были залиты, когда устанавливался блог (глюкнул FTP);

          От себя добавлю, включите отображение всех php ошибок.
  • 0
    еще бы фейсбук добавить
    там же oauth вроде?
    • +2
      Да, добавим конечн.
  • 0
    интересно, только у меня проблема с тем, что после ответа от loginza.ru открывается абсолютно пустая страница (никакого хтмл кода), но при этом в адресной строке указан верный адрес…
    • +2
      Не понял, можете приложить побольше данных (скриншот, какой адрес, какие действия делались).
      P.S. На хабра почту.
    • 0
      У меня все в порядке на вашем сайте
      • +1
        уже и у меня получилось, благодаря автору
  • 0
    Плагин крутейший, но проверить работу не смог. У меня что-то пошло не так.

    Плагин не был активирован, потому что он вызвал фатальную ошибку.
    Parse error: syntax error, unexpected T_ARRAY, expecting ')' in /nfs/c01/h14/mnt/14783/domains/bodybeat.ru/html/wp-content/plugins/loginza/loginza.php on line 218


    Куда писать для выяснения подробностей?

    • +2
      попробуй найти строку 218, в ней кусок должен быть именно таким:
      function loginza_fetch_template_data (Array $data) {

      Если он такой же (до символьный), то попробуй убрать Array. А вообще пиши в хабра почту, будем тестировать, может версия php c ограничениями, я тестировал на >= 5.2
      • 0
        Спасибо. Буду разбираться. Есть большая вероятность, что у нас стоит что-то PHP 4.
        • +5
          [ирония]Ух ты, а можно Ваш автограф?![/ирония]
        • +1
          Ну, да на php4 работать не будет, ООП же)) А какой версии у Вас Wordpress (интересно)?
          • 0
            Видимо 4.4.8-1

            Можно подрубить 5.2.6-1, но такой необходимости пока не было.

            Вопдпресс 2.9.1 или просто 2.9
  • 0
    По описанию супер.Протестирую и внедрю на своем блоге. Спасибо. С меня обзор в блоге, если все пройдет гладко.
    • +1
      Спасибо.
  • 0
    о, это то что я хотел!

    интересно только — будет ли работать с такими авторизациями контент закрытый плагином для скрытия контента. это не вопрос, я в принципе проверю завтра)

    спасибо!
    • 0
      работает, всё видно.
  • 0
    Очень полезная вещь. Спасибо. Прикрутил к своему универскому блогу, народу как раз регаться было влом!
  • 0
    Круто! Спасибо большое :)
  • 0
    авторизация вконтакте не работает. выкидывает на https://loginza.ru/api/redirectƒ
    Invalid / empty session data! Retry auth.
    • +2
      Мне вот, кстати, этот дополнительный костыль с Логинзой тоже не совсем понятен. Не, сервис нормальный, нет претензий. Но зачем авторизацию во ВКонтакте прикручивать через него, когда без этого легко можно обойтись. Посмотрите в сторону того же LiveStreet, в котором авторизация с помощью OpenID реализована очень удачно и без дополнительных сложностей вроде промежуточных сервисов.
      • 0
        Я считаю в этом есть плюсы:
        — Разделение логики. Плагин по сути выполняет простые действия, обрабатывает максимально простые наборы данные, сведенные к единому формату, что сводит к минимуму ошибки.
        — Если в логинза добавляются какие то новые провайдеры, то автоматически становятся они и доступны в плагине. Формат данных профиля всегда един.
        — Логинза поддерживает SREG и AX расширения OpenID, что позволяет получать больше данных профиля от провайдеров которые их поддерживают (Google, Yandex, MyOpenID...).
        — Да и в целом если бы вся логика авторизации была напичкана в плагин, то он был бы огромен, платформозависим (повышалась бы вероятность косяков в зависимости от возможностей php на хостингах блогов).
        • 0
          Соглашаюсь. Для авторизации с помощью массы различных OpenID это действительно правильное решение. Просто меня в данный момент интересует именно авторизация с помощью ВКонтакте, поэтому я на всё и смотрю с этой позиции.
  • +1
    И ещё одно наблюдение: не могу понять, как привязать авторизацию к уже существующему пользователю. У меня в профиле, во всяком случае, никаких возможностей для этого не появилось.
  • 0
    У вас даже на скриншоте написано «Или войдите с используя Ваш логин и пароль:»

    Теперь и у меня на сайте так написано! Прекрасно!!))))

    А вообще ценно мерси.
    • 0
      упс, опечаточка. будет исправленно)
    • 0
      А еще при оставлении комментария написано «Так же, вы можете войти используя»… — надо слитно.

      Кстати, у меня этой штуки над формой добавления комментариев почему-то не появляется… :( То есть по сути оно не работает. Чо делать не знаю, сижу плачу :*(
      • 0
        Можете скинуть мне тему которая у вас стоит, изучу, возможно в ней дело.
  • 0
    у меня в теме Cordobo Green не добавляются комменты через Вконтакте, www.blogestate.ru/.
    Хотя авторизация происходит успешно.
    • 0
      А в админке комментарии появляются? может стоит премодерация?
      • 0
        Я например отправил комментарий, да он не отобращается, но при попытке еще один такой же запостить, мне Ваш блог показал: «Дубликат комментария удален. Кажется, Вы уже говорили это!». Значит они добавляются, но не отображаются — проверьте премодерацию.
        • 0
          Даже в админке не появляются. Хотя если авторизовываться через Яндекс — все ок, комментарий отправлен и показывается текст «Ожидает модерации».
          • 0
            А у вас в профиле контакта email указан (и так же открыт для доступна)? Наверно из за того что email в профиль WP не передан, комментарии не показываются.
            • 0
              Да, имейл скрыт. А у кого он не скрыт? Странное немного ограничение получается.
  • 0
    Спасибо Вам!

    Подпишусь под коментами, которые просят Мэйлру и Фейсбук
    • 0
      Добавили фейсбук и твиттер
  • 0
    день добрый,
    надеюсь, что по адресу — если ошибся, подскажите в какое окошко постучаться )

    не могу заставить корректно работать плагин у себя: о( — www.daniilkomov.ru

    WP 2.9.2–ru_RU

    траблы во всплывающем окошке
    проходит авторизация на любой сервис (кроме контакта) — а дальше тишина. кнопка «далее» не активна — такое ощущение что браузер «подвис»
    один раз проскочило — через гугловский — и то с предупреждением, что используется «небезопасная форма отправки», но прокочила тока авторизация — комент оставить не получилось — опять «повисло»
    • 0
      смотрю, у народа работает (
      может с темой как то не стыкуется? — у меня стоит Zero 1.3

      самое обидное — что если ручками вписывать OpenID в строку «веб страница» — то всё работает (
  • 0
    плагин для wordpress у меня заработал только на стандартном шаблоне… жаль.
    а так, автору респект.
    • 0
      Пробовал на DynaBlue — не работает
      • 0
        Думаю не сложно будет его адаптировать под эту тему, просто надо посмотреть ID элементов формы комментирования, и подправить соответственную функцию в плагине loginza_ui_comment_form()
        • 0
          Попытка авторизации в админке с помощью твиттера, например, была тоже неудачна. Это звенья одной цепи?
          • 0
            Тогда спрошу, а как проявляется не работа плагина в др. теме?
            • 0
              В форме авторизации site.ru/wp-login.php выбираю Twitter — Продолжить. Далее в попапе «Allow Loginza access?» нажимаю Allow. Далее переброс на главную блога. Без авторизации.
              • 0
                Может дело не в теме? А например в возможностях хостинга (отсутствие CURL, запрет схемы http:// для file_get_contents)?
                • 0
                  в стандартной теме все функции работоспособны. значит явно дело в теме.
                  • 0
                    Странно) Можно мне эту тему на изучение прислать, контакты есть на сайте loginza.ru/contacts
  • 0
    Чёрт. он не поддерживает WordPress 3.0 :/
    • 0
      Да, писался под 2.9.*, на 3.0 еще не проводили тестом, на след. недельке сделаем новый билд.
    • 0
      Поддерживает начиная с версии 1.0.9, обновите плагин loginza.ru/wp-plugin
  • 0
    отличный плагин!
    Никаких сложностей в настройке, не надо самому регить приложение на фейсбуке, твиттере для получения API KEY — установил и работает!
    И наконец-то идентификация через ВКонтакте :) Оч удобно.
    Спасибо :)
  • 0
    хм… странно, не работает при авторизации через wp-login.php, но с формы от добавления комментариев логинится, хотя авторизация на некоторых сервисах и тут не срабатывает(yandex, twitter из тех что оттестить удалось), выдает — «Catchable fatal error: Object of class WP_Error could not be converted to string in ~\wordpress\wp-includes\formatting.php on line 2772»
    • 0
      Какая версия плагина у Вас установлена и какой версии WordPress?
      • 0
        плагин 1.1.0, wp 3.0.1
        авторизацию через основную форму вылечил (http://forum.loginza.ru/viewtopic.php?p=527#p527)
        а вот ошибку некоторых сервисов победить так и не удалось пока что
  • 0
    Здравствуйте!

    Можно ли использовать Плагин для каждого из сайтов сети с однинаковыми настройками? (=mu-plugins)
  • 0
    Спасибо за плагин! У меня следующий вопрос к разработчику плагина — почему над формой ввода комментария отображаются иконки для входа через те сервисы, которые я не указывал в настройках? То есть, если я выберу даже один сервис (назовём его X), то на странице
    /wp-login.php
    будет отображена кнопка для авторизации через X, а вот на странице статьи возле формы ввода коммента всё равно отображается несколько кнопок независимо от индивидуальных настроек. Не порядочек :)
    Исправьте, пожалуйста.
    Также не плохо было бы добавить настройку выбора позиции виджета на странице авторизации. По умолчанию виджет находится сверху родных полей авторизации на блоге, а хотелось бы видеть этот виджет ниже. Понимаю, что можно самому переделать, но я не думаю, что я один такой желающий, поэтому данная «косметика» пригодится не только мне.
  • 0
    Очень интересно. Но зачем тогда нужен Disqus Comments?
  • 0
    Гм чет не разобрался как его повесить на сайдбар в качестве виджета входа…
  • 0
    Плагин не работает в свежих сборках WP.

    jQuery в WP работает в режиме noConflict, так что все вызовы jQuery нужно с $(somecrap) заменить на jQuery(somecrap). Кроме того, моветон использовать хардкод в путях к файлам при подгрузке скриптов в шаблоне:

    "/wp-content/plugins/loginza/js/jquery-1.4.2.min.js"
    "/wp-content/plugins/loginza/js/jquery-ui-1.8.4.sortable.min.js"

    А если у меня WP в каталоге /blog/? Кроме того, WP в поставке уже содежит jQuery, зачем загружать два раза один скрипт? Корректнее всего было бы сделать так, например (с использованием очереди и зависимостей загрузки скриптов):

    define('LOGINZA_URL', WP_PLUGIN_URL . '/' . str_replace(basename( __FILE__), "", plugin_basename(__FILE__)));
    wp_enqueue_script('l_sortable', LOGINZA_URL . 'js/jquery-ui-1.8.4.sortable.min.js', array('jquery'));


    Это только то, что бросается в глаза.
    Сдается мне, что плагин придется изрядно переписать до рабочего состояния.
    • 0
      Кстати, этих изменений хватило, чтобы плагин заработал в wp 3.2.1
  • 0
    Спасибо большое за такой плагин.

    Что понравилось:
    1. Наконец-то все комментарии в одном списке, а не так чтобы от авторизованных через твиттер в одном месте, от авторизованных через вконтакт во втором, а от авторизованных через фейсбук в третьем. Хотя не знаю, может есть и какие-то аналогичные плагины у которых комментарии так не разделяются?
    2. Довольно не мало сервисов для авторизации.

    Что не совсем понравилось:
    1. Редирект в настройки профиля сразу после авторизации. Если, например, человек написал комментарий, а затем начинает авторизовываться, то он может так не только текст комментария всего потерять, а ещё и страницу потом замучаться искать, на которой он этот комментарий хотел написать. Тем более что в настройках профиля нет ссылки по которой можно вернуться к тому сообщению на котором находились до этого.
    2. Комментарии от залогинившихся через вконтакт не проходят, если включен акисмет. Почему он их блокирует? Пришлось его выключить, как и было написано в FAQ к плагину. Но очень бы не хотелось от него отказываться. Может есть какие-то аналоги акисмета с которыми данный плагин нормально работает? Или, возможно, это будет как-то исправлено в новых версиях плагина?
    3. Дополнительные сервисы для авторизации не совсем заметны. Я, например, ссылку Ещё далеко не сразу заметил. Хотелось бы чтобы можно было все сервисы для авторизации выводить все сразу, например, сделать опциональную настройку для плагина. Либо, хотя бы, сделать ссылку позаметнее, чтобы было сразу заметно и понятно что это ещё не весь список сервисов.
  • 0
    Спасибо, по плагину планируется обновление, и мы учтем эти дополнения. Спасибо.
    • 0
      Ещё к вышенаписанному. Посмотрите, пожалуйста, на ошибки в валидации которые привносит плагин loginza. Надеюсь можно как-нибудь и это исправить в следующих версиях, чтобы не приходилось после каждого обновления вручную править исходный код, тем более что не весь код локально хранится.
  • 0
    Спасибо. Уже много различных плагинов перепробовал, но комментарии через одни вообще не индексируются, у других наших соц.сетей вообще нет для авторизации. Единственный минус, с которым столкнулся используя loginza, первый раз когда авторизуешься — долго подгружается окно.
  • 0
    Добрый день!
    Для активации плагина необходимо зарегистрироваться у вас на сайте. Но сейчас как я понял регистрация не доступна?

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.