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 Social Login

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

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

Подробнее

У меня есть ссылка на 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 дня. Но я застрял в этой точке плз, кто-то мне помогает. заранее спасибо

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

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

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

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

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