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

4

Решение

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

0

Другие решения

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

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

0

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

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

-1
По вопросам рекламы [email protected]