Drupal Русскоязычное сообщество
Всем доброго дня,
Уже четвертый день бьюсь с настройкой социального плагина HybridAuth Social Login, где делаю подключение к Facebook. К сожалению, нет описания процедур по установке, всё перерыл. Простые базовые настройки сделал. Скажу сразу — сайт у меня двуязычный, Drupal 7, все обновления сделаны.
Проблема следующая – при авторизации на моём сайте через Facebook, авторизация не проходит, с сообщением: You are trying to login with email address of another user. – Даже если пользователь уникальный, и ни у кого такого Е-mail адреса нет.
На сайте Facebook получен сниппет, но я не знаю в какой файл его вписывать. Подскажите, кто уже установил этот модуль, какие и где нужно сделать файловые настройки?
Комментарии
В файлах ничего трогать не надо, все настройки делаются исключительно через админку. Поэтому скачайте библиотеку заново, удалите «правленую» копию и распакуйте скачанное в sites/all/libraries
Что до ошибки — ну значит есть уже регистрация пользователя с email, который приходит от мордокниги
Если разрешали дубликаты мыл и это не помогает — то как именно не помогает? Сообщения «You are trying to login with email address of another user.» в этом случае быть не должно
Отлично, спасибо! Попробую. По дубликатам мыл был другой результат, не помню точно, но входа не было.
Увы, вход не получается.
—————————————————-
Модуль отключил. Библиотеку всю удалил, поставил заново. Очистил кэш, запустил, Крон. Включил модуль. Еще раз прошелся по настройкам, сохранил.
Если вхожу как уникальный пользователь Facebook, то происходит нормальная адресация для входа в Facebook, вхожу в Facebook, после этого мелькает Closing. и на моем сайте даёт сообщение: Required information. И всё, вход на сайт не выполнен.
Если вхожу как по своему аккаунту Facebook, то: Вы пытаетесь войти используя email другого пользователя.
Такая ситуация была и раньше много раз.
—————————————————-
Уже нет вариантов, что делать?? На сайте можно пробовать вход через Facebook.
Если вхожу как уникальный пользователь Facebook, то происходит нормальная адресация для входа в Facebook, вхожу в Facebook, после этого мелькает Closing. и на моем сайте даёт сообщение: Required information. И всё, вход на сайт не выполнен.
Может попробовать убрать из стилей
и увидеть, что просят выбрать имя пользователя? И если этот шаг не нужен, то пойти в настройки модуля и отключить фичу позволения пользователям выбирать себе юзернейм?
Огромное спасибо, Андрей! Такая гора с плеч свалилась, после нескольких дней поисков решения. (!!)
Действительно, когда снял фичу «Allow username change when registering», регистрация сразу прошла.
А когда из стилей убрал див fieldset-wrapper, то появилось поле ввода для E-mail.
В отношении предыдущего сообщения Вы пытаетесь войти используя email другого пользователя. , то да, я нашел аккаунт на сайте с таким E-mail.
* * *
Осталась только такая непонятная вещь, когда в настройках Required information: выставляю запрашиваемые значения Имя и (или) Пол, то они при входе нигде не отображаются. Есть только поле ввода E-mail. Рядом светится уведомление Required information, но через просмотр кода элемента в Chrome я что-то не увидел полей для Имя и Пол. Как их вытащить?
«If authentication provider doesn’t return it, visitor will need to fill additional form before registration.» — эти поля показываются и требуют заполнения только если провайдер аутентификации не вернул их.
* * *
Подключил Twitter, настроил, и он с ходу выдал:
Fatal error: Cannot redeclare class OAuthSignatureMethod_HMAC_SHA1 in /home/tmrussia/public_html/sites/all/modules/oauth/lib/OAuth.php on line 144
Модуль OAuth отключил, очистил кэш, запустил крон, подключил снова OAuth, — ошибка та же.
В модуле OAuth включены только:
HMAC-SHA1
HMAC-SHA256
HMAC-SHA384
HMAC-SHA512
Нашел подобный вопрос на сайте drupal.org, но как я понял пока решения нет?
Мне было бы интересно узнать, у кого нибудь работает Twitter с модулем HybridAuth Social Login? Или это только у меня такая специфическая проблема? (см. пост выше).
Не только у вас, конфликт на уровне библиотеки HybridAuth и модуля OAuth — его пытаются решить, я сам не смотрел в эту проблему — не воспроизводил и не тестировал
Авторизация через соц сети при помощи HybridAuth
Последнее изменение поста: 17 июля 2019 в 18:24
Данный пакет, можно скачать с репозитория modstore.
Данный компонент хорош тем, что у него:
- Много сервисов авторизации (вернее есть все самые популярные).
- Нет зависимости от других компонентов и сервисов. Если к примеру один или несколько сервисов перестали работать (поменялись к примеру алгоритмы или просто отключены) — то всегда можно зайти через другой.
- Нет сторонних js библиотек — работает на чистом php, отсюда — есть возможность изменения внешнего вида формы входа.
- Привязывает разные учетные записи юзера к одной, а не плодит кучу.
- Есть возможность сделать регистрацию через другой компонент, например через Login.
- Поддерживает pdoTools (пожалуй самый популярный и ходовой инструмент), и синтаксис Fenom.
- Автоматически интегрируется с пакетом Office (личный кабинет).
- Простота использования — нужно только получить ключи у нужных провайдеров и прописать их в настройках.
Регистрация у провайдеров и получение ключей
Примечание! Вот так пишутся Callback URI https://site.ru/?hauth.done=Провайдер , например https://site.ru/?hauth.done=Yandex иногда вот так: https://site.ru/assets/components/hybridauth/action.php?hauth.done=Yandex
Регистрация приложений
Яндекс
- Переходим по ссылке
- Заполняем поля Название, Описание, Ссылка на сайт, Платформа — ставим Веб-сервисы, Callback URI и Права
После сохранения, копируем Id и Пароль.
Вконтакте
- Переходим по ссылке
- Пишем название, выбираем опцию Веб-сайт и заполняем Адрес сайта и Базовый домен
- Нажимаем подключить сайт, после этого переходим в настройки и копируем ID приложения и Защищенный ключ
- Переходим по ссылке
- Нажимаем создать проект.
- Указываем название проекта и создаем его.
- Переходим в переходим в панель управления API и сервисы и нажимаем включить API (вверху должен быть указан ранее созданный проект)
- Находим и включаем Contacts API и Google+ API
- Переходим в API и сервисы → Учетные данные и дабавляете их
в поле Какой API вы используете, выбираем Contacts API
Откуда будите вызывать API выбираете Веб-браузер (JavaScript)
После нажатия на выбрать тип учетных данных пользователя (Данные пользователя), должно выйти окошко с надписью создать запрос доступа, соглашаетесь и на открывшейся странице заполняем все данные и сохраняете. - создаем Oauth клиента и копируем их ключи
В общем не все скриншоты сделал и пару пунктов пропустил, может в следующий раз дополню, а пока тыкаем пока не получится в общем.
Github
- Переходим по ссылке
- Заполняем поля Application name, Homepage URL и Authorization callback URL
- Сохраняем приложение и копируем Client ID и Client Secret
- Переходим по ссылке
- Нажимаем добавить новый ID приложения, заполняем и создаем.
- Вас перебросит в панель управления приложения, слева выбираете настройки — основные, проматываем в низ и нажимаем на кнопку Добавить платформу — Веб-сайт, вводим адрес и сохраняем.
- Снова проматываем вверх, заполняем адрес сайта и адрес страницы с политикой конфиденциальности (нужно создать на сайте — можно пустую) и включаем приложение.
- Сохраняем Идентификатор и секрет приложения
Всех основных провайдеров рассмотрели, но можно добавить дополнительных: официальные инструкции по подключению провайдеров лежат здесь , информация там немного устарела, но при желании разберетесь, единственно изменилась ссылка у твиттера на apps.twitter.com .
Настройки провайдеров
Идем в системные настройки (шестеренка в правом верхнем углу), выбираем HybridAuth
и прописываем все ключи, при прописывании смотрите внимательнее, так как где то secret, где, то id.
Вызов HybridAuth
[[!HybridAuth]] — Выведет все иконки соц сетей для авторизации.
Если вам нужны определенные соц сети, то их можно указать в параметре &providers, вот так.
Важно. Так же желательно указать группу, куда попадает пользователь после авторизации, в противном случае он попадет в группу аноним (не сможет не чего делать на сайте). Для того чтобы пользователь попал в другую группу, нужно добавить параметр &groups, пример.
Как создать группу для пользователей на примере тикета, я писал здесь.