Прощай, Loginza! или HybridAuth 0.3.0

Сегодня утром Loginza опять затупила и я не смог авторизоваться на собственном сайте.

Учитывая, что мы заранее подготовились к такой фигне, и 40 активных читателей уже привязали к своей учётке сервисы для авторизации напрямую — сайт переехал на HybridAuth.

Что это нам всем даёт?
1. Нет зависимости от Loginza — это главное.
2. Не грузится javascript от Loginza, а он сильно тормозил.
3. Учётка юзера сайта не зависит от учёток на сервесах. Они связаны, но данные в них хранятся раздельно.
4. Как следствие из предыдущего пункта — нет зависимости от конкретного сервиса авторизации. Если не работает Google значит конец света наступил, можно войти через Яндекс или Твиттер.

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

HybridAuth 0.3.0 beta

Сегодня же выпустил новую версию HybridAuth.

Список изменений:
  • Улучшена обработка ошибок. Больше никаких Uncaught Exception при отказе от авторизации на сервисе.
  • При регистрации нового юезра добавлена проверка по email. Если такой адрес уже есть — учетка приклеится к нему. Удалено по соображениям безопасности.
  • Исправлена генерация нового имени юзера, если его имя с сервиса уже существует на сайте.
  • Исправлено сохранения фотографии в профиль нового юзера.
  • Если авторизованный юзер привязывает к себе запись на удалённом сервисе, и она уже есть у нас в БД, привязанная к другому юзеру — эта запись менять владельца. То есть, можно перепривязать имеющуюся запись к себе и входить по ней.

Всем, кто уже использует HybridAuth рекомендую обновиться.

Следующая заметка
Tickets 0.6.0 beta
Предыдущая заметка
HybridAuth для MODX Revolution


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

  1. Антон Слободчук 23 декабря 2012, 14:38 # 0
    На этой странице в блоке справа при нажатии на иконку ничего не происходит, загружается эта же страница, но с параметром: bezumkin.ru/blog/487/?provider=Google
    Я смог авторизоваться на главной.
    Еще как-то подтормаживает авторизация через Гугл.
    1. Василий Наумкин 23 декабря 2012, 15:40 # 0
      Всё верно — тут же вызов логинзы, я предупредил:
      После этого заходите на сайт как все — через HybridAuth на главной странице (или любой другой, кроме этой).

      Ну а Google да, не торопится. Но теперь в этом некого винить, кроме него самого.
    2. Александр Наумов 23 декабря 2012, 17:42 # 0
      Еще не ставил HybridAuth но то, как оно работает здесь — это на порядок круче Логинзы. Спасибо за дополнение!
      1. Краковецкий Вася 23 декабря 2012, 17:43 # 0
        Не к тому аккаунту привязал, теперь нельзя указать в профиле основной адрес почты — пишет «Этот адрес электронной почты уже используется!», а к нему и граватар привязан и комментарии…
        1. Василий Наумкин 23 декабря 2012, 17:49 # 0
          Так зайди через логинзу на этой странице и перепривяжи к той учетке все аккаунты, какие надо.

          С версии 0.3.0 так можно.
          1. Краковецкий Вася 23 декабря 2012, 17:51 # 0
            дык не заходит — bezumkin.ru/blog/487/?provider=Google сюда перекидывает и всё.
            1. Василий Наумкин 23 декабря 2012, 17:53 # 0
              Дык надо зайти через форму прям в заметке, а не справа (щас ее уберу вообще, по избежание).
              1. Василий Наумкин 23 декабря 2012, 17:55 # 0
                Ну и разлогиниться, конечно, надо.
                1. Василий Краковецкий 23 декабря 2012, 17:56 # 0
                  Да, спасибо за подсказку! Аккаунт выше можно удалить, буду писать с этого)
                  1. Василий Наумкин 23 декабря 2012, 18:05 # 0
                    Готово!
          2. Пётр Молчанов 24 декабря 2012, 16:51 # 0
            Прикольно, обновил плагин до текущей версии и все проблемы с авторизацией пропали (писал о них в ветке 0.2.0). Василий, огромное вам спасибо
            1. Василий Наумкин 24 декабря 2012, 17:39 # 0
              Для того я и выпускаю ранние беты, чтобы исправлять глюки.

              На здоровье!
              1. Пётр Молчанов 24 декабря 2012, 17:46 # 0
                че-то у мя проблема с отображением социалок, в которых я уже авторизовался. Что, например, должно возвращать [[+facebook.provider]]? у меня все холдеры всегда пустые((( И еще, видимо, не все ошибки в файл языка закинул, т.к. при определенных ситуациях пишет такое: user_profile_err_nf. или это системная нотификация?
            2. Пётр Молчанов 26 декабря 2012, 12:10 # 0
              Гляньте, всё ли я правильно делаю. Вставляю на новую страницу это:
              [[!HybridAuth? &providers=`Vkontakte,Facebook,Mailru,Google,Twitter`]]
              затем в чанке tpl.HybridAuth.logout, например, оставляю тока Mailru
              [[+photo:notempty=`<img src="[[+photo]]" align="left" alt="username"/>`]]
              [[%ha.greeting]] <b>[[+username]]</b> ([[+fullname]])!
              
              <a href="[[+logout_url]]">[[%ha.logout]]</a>
              [[+error:notempty=`<div class="alert alert-block alert-error">[[+error]]</div>`]]
              <br /><br />
              [[%ha.providers_available]]
              [[+mailru.provider:is=``:then=`<a href="[[+login_url]]&provider=Mailru">Mailru</a>`:else=`Mailru`]]
              Тыкаю на ссылку Mailru, все норм, запись в бд (ha_user_services) создается, internlKey правильный, provider=Mailru, остальные данные тоже в норме, но на странице Mailru так и остается ссылкой… что не так, не пойму о_0
              1. Василий Наумкин 26 декабря 2012, 12:20 # 0
                Фиг знает, должно работать.

                А другие провайдеры как, пробовали?
                1. Пётр Молчанов 26 декабря 2012, 12:23 # 0
                  Дык со всеми так. Я мэйлру оставил в кач-ве примера. Видел у вас в коде берется список подключенных провайдеров
                  Hybrid_Auth->getConnectedProviders
                  , у мя в настройках есть пара пустых провайдеров + 1 неработающий, может это как-то влиять на выбор подключенных провайдеров?
                  1. Василий Наумкин 26 декабря 2012, 13:28 # 0
                    Вы не туда смотрите, вот куда нужно.

                    $profiles = $this->modx->user->getMany('Services');
                    $add = array();
                    foreach ($profiles as $v) {
                    	$add = array_merge($add, $v->toArray(strtolower($v->get('provider').'.')));
                    }

                    Не знаю, что тут может быть не так, у меня везде работает.

                    Если охота разобраться — посмотрите на вашего юзера в админке, у него класс haUser? Если да, попробуйте выбрать его через xPDO и достать его сервисы.
                    1. Пётр Молчанов 26 декабря 2012, 16:20 # 0
                      Нет, класс modUser. Т.е. проверка только при классе haUser? В какой момент ставится этот класс?
                      1. Василий Наумкин 26 декабря 2012, 16:24 # 0
                        При создании\обновлении юзера компонентом HybridAuth.

                        Вы видимо привязываете учётки к уже существующим юзерам? Тогда просто смените класс. Добавлю это по умолчанию.
                        1. Пётр Молчанов 26 декабря 2012, 16:26 # 0
                          У меня БД из ~70 тыщ пользователей уже))) Буду оч признателен, если сделаете добавление своего класса по умолчанию
                          1. Василий Наумкин 26 декабря 2012, 17:36 # 0
                            Обновляйтесь, версия 0.3.1.

                            Заодно и потестируете =)
                            1. Пётр Молчанов 26 декабря 2012, 18:56 # 0
                              А как влияет смена класса? у меня не поломается текущая форма редактирования профиля и форма восстановления пароля? кстати, о восстановлении… к сожалению она у меня имеется, но ведь её ни в коем случае нельзя использовать, если регишься через соцсеть, ведь так?
                              1. Василий Наумкин 26 декабря 2012, 19:01 # 0
                                Не знаю, по идее не должно. HybridAuth умеет редактировать профили нисколько не хуже, в любом случае.

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

                                Если вы создаете юзеров обычной регистрацией — то они сами будут знать свой пароль.

                                Мне всё это проверять нет ни времени ни желания, так что — дерзайте!
                                1. Пётр Молчанов 27 декабря 2012, 10:36 # 0
                                  Спасибо за ответ :) Главное — не запороть базу юзеров))) Планирую подключить хибрид, а потом отказаться от обычной регистрации. Еще вопрос, как к спецу модыкса, у меня при любой регистрации (соцсеть, обычная) происходят кое-какие мои махинации (проверка определенных кук), но щас я это делаю прямо в коде класса логинзы, предполагаю, что можно сделать через плагин, но не знаю как. Подскажи, если не сложно
                                  1. Василий Наумкин 27 декабря 2012, 10:48 # 0
                                    Есть два события — до сохранения юзера OnBeforeUserFormSave и после OnUserFormSave.

                                    Вот на них и надо создавать плагин. В него будут переданы 3 переменные:
                                    1. $mode — может быть new для нового юзера или upd для старого.
                                    2. $user — объект modUser со всеми методами.
                                    3. $id — уникальный идентификатор юзера.

                                    Ну а дальше читаем доки и пишем свой плагин.
                                    1. Пётр Молчанов 27 декабря 2012, 12:25 # 0
                                      Т.е. я могу сразу же брать доп.инфу $profile = $user->getOne('Profile');?
                                      1. Василий Наумкин 27 декабря 2012, 12:45 # 0
                                        А проверить не судьба, надо обязательно спросить?

                                        Да.
                                        1. Пётр Молчанов 27 декабря 2012, 13:05 # 0
                                          А почему может не работать такая конструкция в плагине:
                                          // записываем дату регистрации
                                          	$date_reg = $modx->newObject('modUserSetting');
                                          	$date_reg->set('user',$profile->get('internalKey'));
                                          	$date_reg->set('key','user_regdate');
                                          	$date_reg->set('value',date('Y-m-d H:i:s'));
                                          	$date_reg->save();
                                          1. Василий Наумкин 27 декабря 2012, 13:38 # 0
                                            Вообще не нужно так делать, у юзера есть поле extended для таких вещей.

                                            $ext = $profile->get('extended');
                                            $ext['user_regdate'] = date('Y-m-d H:i:s');
                                            $profile->set('extended', $ext);
                                            $profile->save();
                                            

                                            Дата создания ещё пишется при создании профиля соцсети в таблице modx_ha_user_services.
                                            1. Пётр Молчанов 27 декабря 2012, 14:44 # 0
                                              Знаю про экстендет, раньше писал туда, но иногда это поле полностью затерается :( Еще вопрос в догонку, как брать эти значения из экстендет, не пользуясь функциями модыкса (нужно для вывода статистики во внутренней CRM, делаю через прямые запросы)?
                                              1. Василий Наумкин 27 декабря 2012, 14:57 # 0
                                                Так и брать, через прямые апросы, а потом
                                                $array = json_decode($extended,1);
                                                1. Пётр Молчанов 27 декабря 2012, 14:58 # 0
                                                  хм… с единичкой я еще не пробовал ((( видимо в этом и нюанс
                                                  1. Василий Наумкин 27 декабря 2012, 15:14 # 0
                                                    Без неё — объект, с ней — массив.

                                                    Читайте доки.
                                2. Пётр Молчанов 27 декабря 2012, 12:09 # 0
                                  А кто-нить делал на фэйсбуке? А то у мя не получается… Что ставить в настройках приложения в фб «Как ваше приложение встроено в Facebook?»? Поставил «Website with Facebook Login» и урл на главную своего сайта, но при клике на авторизацию через фб появляется просто белая страница, логи чистые (((
                                  1. Василий Наумкин 27 декабря 2012, 12:45 # 0
                                    Подключил для проверки сюда, работает.

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

                                    Поправлю это в следующей версии.
                                  2. Михаил Т. 27 декабря 2012, 13:14 # 0
                                    Судя по видяшке на Ютюбе он фотку цапает из сервиса? Или все таки Граватар?
                                    1. Михаил Т. 27 декабря 2012, 13:27 # 0
                                      Хотя да. Граватар то в базу не пишет
                                      1. Василий Наумкин 27 декабря 2012, 13:35 # 0
                                        Цепляет из сервиса, если есть и выводит в форме выхода.

                                        Граватар используется по умолчанию в комментариях тикетов.
                                      2. Пётр Молчанов 28 декабря 2012, 11:20 # 0
                                        Я никак не сделать, чтобы те, кто регился до этого через логинзу, авторизовывались бы и через данный модуль? А то всем тем, кто регился через логинзу (тыщ 40-50) будет выдаваться сообщение о том, что такое мыло уже зарегено и авторизоваться они не смогут (((
                                        1. Василий Наумкин 28 декабря 2012, 17:08 # 0
                                          Loginza не выдаёт идентификаторы юзеров на сервисах — так что нет, никак их не сопоставить. Подозреваю, что она это специально сделано.

                                          Единственный способ — авторизоваться (через логинзу или логин\пароль), привязывать учетки через гибрид, а потом ходить уже по ним.
                                          1. Пётр Молчанов 28 декабря 2012, 17:11 # 0
                                            Угу, так и планирую. Ух, замучают меня вопросом «Я уже регистрировалась, а теперь не могу войти, пишет, что юзер с таким мылом уж есть» ((( По большей части мои посетители — домохозяйки, для которых IE — это и есть сам Интернет (((
                                        2. Добряков Алексей 28 декабря 2012, 16:20 # 0
                                          Установил с нуля не разу не ставил и у меня сразу косяки при установке xPDOCacheManager->copyFile(): Could not copy file помойму со всеми файлами
                                          1. Василий Наумкин 28 декабря 2012, 17:08 # 0
                                            Первый раз такая ошибка, попробуйте проверить права на директории\файлы сайта.
                                            1. Добряков Алексей 28 декабря 2012, 17:11 # 0
                                              Ошибка такая первый раз пробовал обновить и опять с нуля устанавливать не фиге не устанавливается нормально хотя у меня твоих плагинов куча и глюков небыло
                                              1. Добряков Алексей 28 декабря 2012, 17:17 # 0
                                                Но всё работает :)))
                                                1. Василий Наумкин 28 декабря 2012, 17:24 # 0
                                                  Могу только предложить полностью удалить и закачать снова из репозитория.

                                                  Я иногда там меняю файлики без изменения версии — могли скачать глючную.
                                                  1. Добряков Алексей 28 декабря 2012, 18:23 # 0
                                                    Вот только что так же сделал такая же фигня, но главное всё работает почему то)))
                                                    1. Василий Наумкин 28 декабря 2012, 19:12 # 0
                                                      Видать, какое то особое колдунство!

                                                      Сидит программист глубоко в отладке. Подходит сынишка:
                                                      — Папа, почему солнышко каждый день встает на востоке, а садится на западе?
                                                      — Ты это проверял?
                                                      — Проверял.
                                                      — Хорошо проверял?
                                                      — Хорошо.
                                                      — Работает?
                                                      — Работает.
                                                      — Каждый день работает?
                                                      — Да, каждый день.
                                                      — Тогда ради бога, сынок, ничего не трогай, ничего не меняй.
                                                      © Бородатый анекдот.
                                            2. Александр Балагуров 31 декабря 2012, 13:30 # 0
                                              Не работает. Мне пишется надпись «вы уже вошли через loginza» но на странице настроек пишет, что мне 401. Плюнул, вошел через Яндекс
                                              1. Abu 01 января 2013, 19:31 # 0
                                                Классное дополнение, все заработало без особых напрягов.
                                                Вконтакт, Майлру подключил, Одноклассники обещали рассмотреть заявку (в этом году) и выслать id и key (как-нибудь).
                                                1. Василий Наумкин 01 января 2013, 19:32 # 0
                                                  Не знал, что у одноклассников так всё сложно.

                                                  Им же хуже.
                                                2. Александр Донский 07 января 2013, 14:58 # 0
                                                  не смог зайти через гугл, пришлось создавать почту на яндексе.
                                                  Хочу зайти с гугла — пишет, что этот емайл уже используется, нажимаю здесь на страницу с настройками- bezumkin.ru/settings.html — ошибка 401
                                                  1. Василий Наумкин 07 января 2013, 15:22 # 0
                                                    Нужно было авторизоваться через логинзу и привязать свои учетки.

                                                    bezumkin.ru/sections/components/487/#comment-4504
                                                  2. Наговицын Павел 07 января 2013, 17:11 # 0
                                                    Блин, хоть убейте, не могу понять как сделать вход через Вконтакте… может подскажет кто? желательно по-подобней
                                                    1. Василий Наумкин 07 января 2013, 18:29 # 0
                                                      Вот инструкция в картинках, для Facebook.
                                                      У Вконтакте всё так же.

                                                      1. Создать приложение на vk.com
                                                      2. Получить ключи для работы с ним
                                                      3. Указать url для возрата (ткт не уверен, может и не надо)
                                                      4. Забить ключи в настройки
                                                      5. Вызвать сниппет с указанием &provider=`Vkontakte`

                                                      Все как и для других провайдеров, особой разницы нет.
                                                    2. Наговицын Павел 08 января 2013, 01:32 # 0
                                                      потому собственно и спросил, что так и делаю, но при нажатии на ссылку, просто ничего не происходит((
                                                      1. Наговицын Павел 08 января 2013, 01:52 # 0
                                                        Хотя нет, вот что мне сейчас пишет ![HybridAuth] Вы должны указать хотя бы одного провайдера.! не понимаю почему, все 15 раз проверил. Спасиббо кстати что вообще на такие нубские вопросы отвечаешь
                                                        1. Василий Наумкин 08 января 2013, 05:11 # 0
                                                          Сниппет как вызываешь?
                                                        2. Наговицын Павел 08 января 2013, 12:36 # 0
                                                          [[!HybridAuth? 
                                                          &provider=`Vkontakte` 
                                                          ]]
                                                          1. Василий Наумкин 08 января 2013, 13:02 # 0
                                                            Должно быть &providers=`Vkontakte`, то есть, множественное число.

                                                            Если перетащить сниппет на окно редактирования документа — то вылезет всплывашка с его параметрами.
                                                          2. Наговицын Павел 08 января 2013, 13:19 # 0
                                                            спасибо, заработало, теперь такая ошибка
                                                            username: Некорректное имя пользователя.
                                                            1. Василий Наумкин 08 января 2013, 13:24 # 0
                                                              Паш, а ты принципиально не отвечаешь на мои комментарии?
                                                              Надо тыкать на кнопочку «ответить» под комментарием — так будет гораздо лучше.

                                                              А по твоему вопросу — щас подключу Вконтакте и проверим, как работает.
                                                              1. Наговицын Павел 08 января 2013, 13:55 # 0
                                                                нет конечно) я просто по ссылке с почты перехожу, а она сразу на коментарий выкидывает))
                                                                1. Василий Наумкин 08 января 2013, 13:57 # 0
                                                                  Ну так должно быть еще удобнее нажать на «ответить».

                                                                  У меня наверное с дизайном что-то не так — многие эту ссылку не замечают.
                                                              2. Василий Наумкин 08 января 2013, 13:55 # 0
                                                                Подключил без проблем.

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

                                                                bezumkin@yandex.ru
                                                                1. Наговицын Павел 08 января 2013, 15:51 # 0
                                                                  скинул на почту
                                                              3. Михаил 08 января 2013, 17:23 # 0
                                                                Василий, добрый день.
                                                                Попробовал поставить Hybrid и возник вопрос: авторизация не работает с сайтами на локалке? Только на хостинге?
                                                                1. Василий Наумкин 08 января 2013, 17:26 # 0
                                                                  А на какой адрес Google будет тебя перенаправлять после авторизации, на 127.0.0.1? =)

                                                                  Конечно нет, надо нормальное доменное имя, которое ты сможешь дать сервису.
                                                                  1. Михаил 08 января 2013, 17:29 # 0
                                                                    да я так… удостовериться :)
                                                                    уже на хостинг перекидываю сайт, спасибо
                                                                    1. Михаил 09 января 2013, 01:31 # 0
                                                                      markitup не отображается в тикетах, куда смотреть?
                                                                    2. Михаил Т. 10 января 2013, 19:37 # 0
                                                                      Это вообще конечно гиперпечалька. Никак не затестить сервисы без внешнего ip'а или хостинга
                                                                      1. Василий Наумкин 10 января 2013, 21:57 # 0
                                                                        Да, уж.

                                                                        А без интернета — вообще беда.
                                                                        1. Abu 13 января 2013, 13:51 # 0
                                                                          В hosts прописать редиректы на локальный сервер, у меня так работает. Виртуальный сервер на 192.168.56.10, соотвтветственно запись в хостс- 192.168.56.10 mysite.ru для удобства есть утилиты hosts manager и т.п.
                                                                          Еще из плюсов удобно и на рабочий сервер переносить и синхронизация/бэкап.
                                                                      2. Александр Наумов 10 января 2013, 22:33 # 0
                                                                        У меня на локалке работает через Twiter, других не проверял.
                                                                        1. Михаил Т. 13 января 2013, 18:33 # 0
                                                                          А что вы ставите в поле website?
                                                                          1. Александр Наумов 14 января 2013, 08:23 # 0
                                                                            Пишу тот домен, который тестирую на хостинге.
                                                                      3. Михаил Т. 15 января 2013, 13:16 # 0
                                                                        Почему-то при авторизации в яндексе упорно вылазит ошибка 400 redirect_uri_mismatch
                                                                        Что там нужно поставить в callback?
                                                                        1. Михаил Т. 15 января 2013, 13:37 # 0
                                                                          И еще, киньте пожалуйста, кто в гугле делал авторизацию, ссылочку где мать его берется ключ и id. Неужели им так трудно сделать ссылки прямо в документации?
                                                                          1. Василий Наумкин 15 января 2013, 13:57 # 0
                                                                            1. Михаил Т. 15 января 2013, 14:37 # 0
                                                                              Оо грейт, спасибо! Вот за, что я не люблю google и facebook так это за не удобную документацию по API
                                                                              Вконтакте и Яндексе в отличии от них все блестяще (вне зависимости от языка)
                                                                          2. Степанов Максим 19 января 2013, 06:22 # 0
                                                                            Подскажите пожалуйста, правильно ли я понимаю дополнение работает как регистрация, все данные записываются в БД?
                                                                            1. Василий Наумкин 19 января 2013, 07:30 # 0
                                                                              Да.
                                                                              1. Степанов Максим 19 января 2013, 07:32 # 0
                                                                                и еще вопрос такой, есть ли возможность авторизации с mail.ru и одноклассники?
                                                                                1. Василий Наумкин 19 января 2013, 08:10 # 0
                                                                                  Есть.
                                                                            2. Пётр Молчанов 21 января 2013, 12:55 # 0
                                                                              Вопрос по поводу ВК: пытаюсь авторизоваться — пишет «email: Этот адрес электронной почты уже используется!». Смотрю лог
                                                                              [2013-01-21 12:45:11] (ERROR @ /index.php) [HybridAuth] Unable to create user Array
                                                                              (
                                                                                  [username] => 13085394
                                                                                  [fullname] => бла-бла
                                                                                  [dob] => 
                                                                                  [email] => 
                                                                                  [photo] => бла-бла
                                                                                  [website] => 
                                                                                  [phone] => 
                                                                                  [address] => 
                                                                                  [country] => 
                                                                                  [state] => 
                                                                                  [city] => 
                                                                                  [zip] => 
                                                                                  [active] => 1
                                                                                  [provider] => Array
                                                                                      (
                                                                                          [identifier] => бла-бла
                                                                                          [webSiteURL] => 
                                                                                          [profileURL] => бла-бла
                                                                                          [photoURL] => бла-бла
                                                                                          [displayName] => 
                                                                                          [description] => 
                                                                                          [firstName] => Сергей
                                                                                          [lastName] => Бултыгин
                                                                                          [gender] => male
                                                                                          [language] => 
                                                                                          [age] => 
                                                                                          [birthDay] => 1981
                                                                                          [birthMonth] => 1
                                                                                          [birthYear] => 22
                                                                                          [email] => 
                                                                                          [emailVerified] => 
                                                                                          [phone] => 
                                                                                          [address] => 
                                                                                          [country] => 
                                                                                          [region] => 
                                                                                          [city] => 
                                                                                          [zip] => 
                                                                                          [provider] => Vkontakte
                                                                                      )
                                                                              
                                                                                  [groups] => Пользователи
                                                                              )
                                                                              . Message: email: Этот адрес электронной почты уже используется!
                                                                              
                                                                              Поле email'а пустое… И теперь каждый раз пишет ошибку. Как быть?
                                                                              1. Andrei Kilin 21 января 2013, 13:15 # 0
                                                                                Какую версию пользуешь? Вроде как в 0.3.0 beta Василий убрал проверку по мылу.
                                                                                1. Пётр Молчанов 21 января 2013, 14:38 # 0
                                                                                  0.3.2 beta написано
                                                                                2. Василий Наумкин 21 января 2013, 15:46 # 0
                                                                                  Разрешить в настройках сайта использовать один email разным юзерам.

                                                                                  Или менять пустые email плагином до сохранения юзера.
                                                                                  1. Пётр Молчанов 21 января 2013, 16:06 # 0
                                                                                    Ок, задействую событие OnUserBeforeSave, редиректну на страницу, где попрошу указать мыло, но как в этом случае продолжить регистрацию после указания человеком мыла?
                                                                                    1. Василий Наумкин 21 января 2013, 17:47 # 0
                                                                                      Не надо редиректов.

                                                                                      Надо перед сохранением написать лабуду в email, а после — удалить и редиректить на обновление профиля, где требовать ввести нормальный емайл.
                                                                                      1. Василий Наумкин 21 января 2013, 19:33 # 0
                                                                                        Петр, обновляй пакет с репозитория — багу поправил.

                                                                                        Теперь юзер без вопросов создаётся с пустым email, а дальше ты уже заставляй его заполнять, как хочешь.
                                                                                        1. Пётр Молчанов 22 января 2013, 09:34 # 0
                                                                                          Спасибо, ошибки нет. Теперь буду дальше докручивать…
                                                                                  2. Александр Донский 28 января 2013, 17:38 # 0
                                                                                    а у меня, когда использовал ВК, пишет
                                                                                    Приветствую, 1234567890 (username)!

                                                                                    это нормально?
                                                                                    1. Василий Наумкин 28 января 2013, 18:10 # 0
                                                                                      А теперь зайди во Вконтакте и посмотри, какое у тебя там имя стоит.
                                                                                      1. Александр Донский 28 января 2013, 19:57 # 0
                                                                                        упс :D
                                                                                    2. Сергей Шлоков 17 марта 2013, 18:04 # 0
                                                                                      Василий, нужна ваша помощь.
                                                                                      Регистрирую через Twitter (согласно видеоинструкции) и через Yandex (тоже ничего сложного). Получаю один и тот же ответ:
                                                                                      You cannot access this page directly.

                                                                                      Вызываю сниппет так: [[!HybridAuth? &providers=`Yandex,Twitter`]]
                                                                                      Адреса выглядят так:
                                                                                      Яндекс: site.ru/assets/components/hybridauth/action.php?hauth.start=Yandex&hauth.time=1363528766
                                                                                      Twitter: site.ru/assets/components/hybridauth/action.php?hauth.start=Twitter&hauth.time=1363528962.
                                                                                      Скорее всего я чего-то не так делаю, но чего?
                                                                                      1. Василий Наумкин 17 марта 2013, 18:07 # 0
                                                                                        Всё так.

                                                                                        Такая ошибка бывает из-за использования php-apc, от него кэшируется сессия. Проверь, есть ли он у тебя и попробуй отключить. bezumkin.ru/modx/minishop2/faq.html
                                                                                        1. Сергей Шлоков 17 марта 2013, 18:37 # 0
                                                                                          Спасибо. Отключил. Работает.
                                                                                      2. inogda 12 мая 2013, 23:04 # 0
                                                                                        Спасибо за HybridAuth, но
                                                                                        Еще есть вопросик?
                                                                                        При выходе (Logout) убиваются абсолютно все сессии…
                                                                                        /*
                                                                                        * Destroys all sessions
                                                                                        *
                                                                                        * @return void
                                                                                        * */
                                                                                        Это как бы не очень хорошо… ведь на сайте используются и другие сессии для работы, которые тоже уничтожаются…
                                                                                        Можно конечно через куки, но все же, может быть есть другой выход?
                                                                                        1. Олег Максименко 12 мая 2013, 23:14 # 0
                                                                                          ты на сам код смотришь или только на комментарии?
                                                                                          1. inogda 12 мая 2013, 23:21 # 0
                                                                                            на код смотрел, вроде как не должно… но на сайте полдня перепроверял… убивает все сессии что были, в том числе и мои… посмотрю конечно еще что и как… просто такого как бы не должно быть… буду разбираться что к чему…
                                                                                            1. Василий Наумкин 13 мая 2013, 07:12 # 0
                                                                                              Нужно отвечать на комментарии, а не писать новые в корень ветки.

                                                                                              Destroys all sessions — это про сессии HybridAuth, а не MODX, у которого вход и выход осуществляется через стандартные процессоры.

                                                                                              На этом сайте я авторизуюсь и в админке, и на фронте — 2 разных юзера. Вход\выход в них никак не влияет друг на друга, проверял много раз.
                                                                                              1. inogda 13 мая 2013, 14:50 # 0
                                                                                                спасибо за консультацию… видимо сбрасывает сам MODX, так как при выходе через LOGIN сессии так же удаляются… пойдем тогда другим путем, через куки…
                                                                                        2. Алексей 27 мая 2013, 23:21 # 0
                                                                                          не нашел настройки редиректа на ресурс при неудачной авторизации (на запрос стороннего сервиса — фэйсбук, яндек, гугл и т.д. пользователь ответил «отмена», не передавать данные)
                                                                                          1. Василий Наумкин 28 мая 2013, 06:04 # 0
                                                                                            Ты где то видишь здесь отдельный адрес для «отмена, не передавать данные»?


                                                                                            Отправляет обратно удалённый сервис, и всегда по одному адресу, что в случае успеха, что в случае отказа. Поэтому и нет такой настройки.
                                                                                            1. Алексей 28 мая 2013, 09:09 # 0
                                                                                              там вообще-то нету и редиректов при успешном входе и при успешном выходе, согласен. Порою код на предмет внутреннего редиректа как сделано у тебя на успешное подтверждение аккаунта.
                                                                                          2. Пётр Молчанов 11 июля 2013, 13:07 # 0
                                                                                            С некоторый пор перестало авторизовывать в контакте, а в логах вот такие ошибки:
                                                                                            [2013-07-10 21:06:28] (ERROR @ /index.php) Error 22003 executing statement:
                                                                                            INSERT INTO `hpmo_ha_user_services` (`internalKey`, `identifier`, `provider`, `createdon`, `websiteurl`, `profileurl`, `photourl`, `displayname`, `description`, `firstname`, `lastname`, `gender`, `language`, `age`, `birthday`, `birthmonth`, `birthyear`, `email`, `emailverified`, `phone`, `address`, `country`, `region`, `city`, `zip`) VALUES (122180, '36034193', 'Vkontakte', '2013-07-10 21:06:07', '', 'http://vk.com/тутайди', 'http://cs310919.vk.me/v310919193/18a2/фоткэ', '', '', 'имя', 'дисплей имя', 'female', '', 0, 1988, 8, 21, '', '', '', '', 0, '', '', '')
                                                                                            Array
                                                                                            (
                                                                                                [0] => 22003
                                                                                                [1] => 1264
                                                                                                [2] => Out of range value for column 'birthday' at row 1
                                                                                            )
                                                                                            
                                                                                            [2013-07-10 21:06:28] (ERROR @ /index.php) [HybridAuth] unable to save service profile for user 122180. Message: haservice_err_save
                                                                                            Я понимаю так полагаю, что 1988 это все таки год, но почему вставляется не в то поле. В БД вижу, что birthday ограничивается по кол-ву. У меня одного такая проблема?
                                                                                            1. Макс Мамонтов 23 июля 2013, 14:54 # 0
                                                                                              Круто! Спасибо, все работает!
                                                                                              Добавление новых комментариев отключено.