HybridAuth не проходит проверку подлинности при использовании пользовательского пути сеанса php

#php #session #hybridauth

#php #сеанс #hybridauth

Вопрос:

У меня проблема при использовании плагина HybridAuth. Я включил плагин в качестве всплывающего окна на своей домашней странице. При нажатии на кнопку входа с домашней страницы плагин загрузится в colorbox.

На моем сервере я не могу использовать путь сохранения сеанса php по умолчанию, поэтому я установил его как временный путь php для сохранения сеанса, как показано ниже в index.php моей корневой папки.

 $dir = sys_get_temp_dir();
session_save_path($dir);
  

После обновления этого кода плагин аутентифицирует социальную сеть, которую успешно выбрал клиент, и возвращается обратно на мой сайт, но не выполняет приведенное ниже условие,

 $hybridauth->isConnectedWith( $_GET["connected_with"] ) // it is always return false
  

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

 "You cannot access this page directly."
  

Любая помощь была бы оценена. Заранее спасибо.

Комментарии:

1. Я также получаю ту же ошибку. Кто-нибудь может быстро исправить это?

2. @user2916075: Возможно, он не хранит сеанс пользователя, в который вы пытались войти. Вы проверяли, существует ли сеанс после перенаправления на ваш сайт?

3. Включите отладку и дайте нам возможность увидеть, в чем, по словам API, проблема. Я готов поспорить, что вы увидите PHP session.name diff from default PHPSESSID.

4. что означает это сообщение об ошибке?

Ответ №1:

Проблема в вашем пути сеанса по умолчанию:

 $dir = sys_get_temp_dir();
session_save_path($dir);
  

Я бы напечатал_r сеансов, чтобы посмотреть, что было зарегистрировано. Почему у вас проблемы с путем сеанса по умолчанию? Я бы не стал пытаться его изменять и сначала убедиться, что это работает. Это изменяет основную функциональность HybridAuth.

Почему вы не можете использовать путь сохранения сеанса php по умолчанию? вы находитесь на общем хостинге?

Если у вас есть доступ к командной строке, убедитесь, что пользователь веб-сервера имеет доступ на запись в каталог; это должно решить проблему.

Ответ №2:

Как часто: RTM и откройте для себя использование isConnectedWith

isConnectedWith() Возвращает значение true или false, если текущий пользователь подключен к данному провайдеру. Hybrid_Auth::isConnectedWith() использует сеансы PHP. Чтобы узнать больше, обратитесь к разделу Сеансы HybridAuth.

 Hybrid_Auth::isConnectedWith(provider)
  

Где provider — это имя тестируемой службы. например: Hybrid_Auth::isConnectedWith(‘Twitter’)

Убедитесь, что ваш $_GET возвращает правильное имя службы.

Если вам нужен список подключенных поставщиков: Hybrid_Auth::getConnectedProviders()

Если вы хотите проверить данные сеанса: Hybrid_Auth::getSessionData()

API!

Ответ №3:

Добавьте свой собственный пользовательский обработчик сеанса вверху hybridauth/index.php (расположенный в том же каталоге, что и config.php и live.php ). Это вынуждает Hybrid Auth использовать ваш пользовательский обработчик сеанса.