Учитывая, что мы заранее подготовились к такой фигне, и 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
Tickets 0.6.0 beta
Предыдущая заметка →
HybridAuth для MODX Revolution
HybridAuth для MODX Revolution
Я смог авторизоваться на главной.
Еще как-то подтормаживает авторизация через Гугл.
Ну а Google да, не торопится. Но теперь в этом некого винить, кроме него самого.
С версии 0.3.0 так можно.
На здоровье!
затем в чанке tpl.HybridAuth.logout, например, оставляю тока Mailru
Тыкаю на ссылку Mailru, все норм, запись в бд (ha_user_services) создается, internlKey правильный, provider=Mailru, остальные данные тоже в норме, но на странице Mailru так и остается ссылкой… что не так, не пойму о_0
А другие провайдеры как, пробовали?
Не знаю, что тут может быть не так, у меня везде работает.
Если охота разобраться — посмотрите на вашего юзера в админке, у него класс haUser? Если да, попробуйте выбрать его через xPDO и достать его сервисы.
Вы видимо привязываете учётки к уже существующим юзерам? Тогда просто смените класс. Добавлю это по умолчанию.
Заодно и потестируете =)
Восстановление пароля должно работать без проблем, так как там пароль заменяется на новый, при подтверждении. При создании юзера через HybridAuth он генерируется случайны, при восстановлении — будет новый, который юзер уже будет знать.
Если вы создаете юзеров обычной регистрацией — то они сами будут знать свой пароль.
Мне всё это проверять нет ни времени ни желания, так что — дерзайте!
Вот на них и надо создавать плагин. В него будут переданы 3 переменные:
1. $mode — может быть new для нового юзера или upd для старого.
2. $user — объект modUser со всеми методами.
3. $id — уникальный идентификатор юзера.
Ну а дальше читаем доки и пишем свой плагин.
Да.
Дата создания ещё пишется при создании профиля соцсети в таблице modx_ha_user_services.
Читайте доки.
Проблема в том, что настройки запуска сниппета кэшируются в сессию. Поэтому, чтобы работал новый провайдер — надо разлогиниться и закрыть браузер — тогда ваша сессия очистится и всё будет ок.
Поправлю это в следующей версии.
Граватар используется по умолчанию в комментариях тикетов.
Единственный способ — авторизоваться (через логинзу или логин\пароль), привязывать учетки через гибрид, а потом ходить уже по ним.
Я иногда там меняю файлики без изменения версии — могли скачать глючную.
© Бородатый анекдот.
Вконтакт, Майлру подключил, Одноклассники обещали рассмотреть заявку (в этом году) и выслать id и key (как-нибудь).
Им же хуже.
Хочу зайти с гугла — пишет, что этот емайл уже используется, нажимаю здесь на страницу с настройками- bezumkin.ru/settings.html — ошибка 401
bezumkin.ru/sections/components/487/#comment-4504
У Вконтакте всё так же.
1. Создать приложение на vk.com
2. Получить ключи для работы с ним
3. Указать url для возрата (ткт не уверен, может и не надо)
4. Забить ключи в настройки
5. Вызвать сниппет с указанием &provider=`Vkontakte`
Все как и для других провайдеров, особой разницы нет.
Если перетащить сниппет на окно редактирования документа — то вылезет всплывашка с его параметрами.
Надо тыкать на кнопочку «ответить» под комментарием — так будет гораздо лучше.
А по твоему вопросу — щас подключу Вконтакте и проверим, как работает.
У меня наверное с дизайном что-то не так — многие эту ссылку не замечают.
По поводу некорректного имени юзера сказать ничего не могу, надо разбираться. Пришли данные от сайта мне на почту, если есть желание — погляжу.
bezumkin@yandex.ru
Попробовал поставить Hybrid и возник вопрос: авторизация не работает с сайтами на локалке? Только на хостинге?
Конечно нет, надо нормальное доменное имя, которое ты сможешь дать сервису.
уже на хостинг перекидываю сайт, спасибо
А без интернета — вообще беда.
Еще из плюсов удобно и на рабочий сервер переносить и синхронизация/бэкап.
Что там нужно поставить в callback?
Вконтакте и Яндексе в отличии от них все блестяще (вне зависимости от языка)
Или менять пустые email плагином до сохранения юзера.
Надо перед сохранением написать лабуду в email, а после — удалить и редиректить на обновление профиля, где требовать ввести нормальный емайл.
Теперь юзер без вопросов создаётся с пустым email, а дальше ты уже заставляй его заполнять, как хочешь.
это нормально?
Регистрирую через 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.
Скорее всего я чего-то не так делаю, но чего?
Такая ошибка бывает из-за использования php-apc, от него кэшируется сессия. Проверь, есть ли он у тебя и попробуй отключить. bezumkin.ru/modx/minishop2/faq.html
Еще есть вопросик?
При выходе (Logout) убиваются абсолютно все сессии…
/*
* Destroys all sessions
*
* @return void
* */
Это как бы не очень хорошо… ведь на сайте используются и другие сессии для работы, которые тоже уничтожаются…
Можно конечно через куки, но все же, может быть есть другой выход?
Destroys all sessions — это про сессии HybridAuth, а не MODX, у которого вход и выход осуществляется через стандартные процессоры.
На этом сайте я авторизуюсь и в админке, и на фронте — 2 разных юзера. Вход\выход в них никак не влияет друг на друга, проверял много раз.
Отправляет обратно удалённый сервис, и всегда по одному адресу, что в случае успеха, что в случае отказа. Поэтому и нет такой настройки.
Я понимаю так полагаю, что 1988 это все таки год, но почему вставляется не в то поле. В БД вижу, что birthday ограничивается по кол-ву. У меня одного такая проблема?