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

Я пытаюсь написать плагин для своего веб-сайта для подключения к facebook с использованием классов HybridAuth.

Я только что попробовал следующий код

function authenticatewith( $provider ) {
    ini_set('display_errors','on');

    //includes
    $config   = dirname(__FILE__) . '/hybridauth-2.1.2/hybridauth/config.php';
    require_once("hybridauth-2.1.2/hybridauth/Hybrid/Auth.php");

    $provider_name = $provider;

    //$config = $this->getconfig($id);
    try {
        // initialize Hybrid_Auth with a given file
        $hybridauth = new Hybrid_Auth($config);

        // try to authenticate with the selected provider
        $adapter = $hybridauth->authenticate($provider_name);

        // then grab the user profile 
        $user_profile = $adapter->getUserProfile();
    }
    catch( Exception $e ) {
        echo "Error: please try again!";
        echo "Original error message: " . $e->getMessage();
    }

    echo "User Details: ";
    var_dump($user_profile);
}

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

Вы не можете получить доступ к этой странице напрямую.

... и URL-адрес в адресной строке браузера выглядит примерно так:

http://zyx.com/oinmonm/plugins/sociallogin/hybridauth-2.1.2/hybridauth/?hauth.start=Facebook&hauth.time=1415168326

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

Вы не можете получить доступ к этой странице напрямую - вход через социальную сеть HybridAuth

Скорее всего, проблема в разных доменных именах, так как мой сайт работает на двух разных доменах.

Как я могу исправить свой код, чтобы предотвратить эту проблему?

Подробнее

У меня есть ссылка на facebook на www.bca.com (пример), затем, когда вы нажимаете, она переходит к файлу controller.php, который будет получать доступ к плагину, который я пишу. Обычно, если я сохраняю папку на веб-сайте, такую ​​как папка плагина, которая недоступна для www.bca.com, вместо этого она доступна по какому-либо другому доменному имени.

Я пытаюсь сказать, что сеанс начинается в bca.com, но классы Hybridauth сохраняются в каком-то другом домене. И я думаю, что это причина, по которой появляется ошибка.

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

// Check if Hybrid_Auth session already exist
if (! $storage->config("CONFIG")) { 
    header("HTTP/1.0 404 Not Found");
    die("You cannot access this page directly.");
}

Я пытался исправить это с последних 3 дней. Но я застрял на этом этапе, пожалуйста, помогите мне. заранее спасибо


person Vikram Anand Bhushan    schedule 05.11.2014    source источник
comment
У меня такая же проблема. Но я знаю, что вызывает. Я начал использовать Zebra Session Class. Так что в основном этот скрипт даже не может найти сеанс. Одна вещь, которую я бы рассмотрел, если то, как проводятся ваши сеансы, отличается. Мне самой просто нужно найти способ заставить этих двоих работать вместе!   -  person Shawn Rebelo    schedule 07.11.2014
comment
Я сталкивался с этой ошибкой раньше, когда информация, которую библиотека hybridauth должна получить из сеанса, отсутствует. Исправьте проблему, из-за которой информация недоступна в хранилище сеансов, и вы устраните эту ошибку.   -  person Ericson578    schedule 08.04.2015


Ответы (3)


Попробуйте после добавления оператора @session_start(); вверху ваших файлов.

person AnkitK    schedule 22.06.2016

Я была такая же проблема. Это относится к нашему пользовательскому обработчику сеанса, который устанавливается session_set_save_handler(). Гибридная аутентификация использует стандартные сеансы PHP, поэтому после перенаправления и открытия нового сеанса гибридная аутентификация начинает использовать стандартные файловые сеансы PHP вместо вашего пользовательского обработчика сеансов. Это приводит к потере данных конфигурации из нашего сеанса и получению этого сообщения об ошибке.

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

person Edd    schedule 09.02.2017

Для тех, у кого такая же проблема, есть вопрос: файл, который вызывает API, находится в том же каталоге?

У меня сработало только тогда, когда я поместил свой файл в ту же папку, что и файл config.php. Попробуйте там и скажите мне, если это работает!

person Israel Fagundes    schedule 26.05.2016