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

Я размещаю приложение PHP Yii на AWS Elastic Beanstalk и, следовательно, использую базу данных для хранения сеансов. Я успешно выполнил вход в facebook с помощью Hybridauth в среде общего хостинга. Когда я нахожусь на Эластическом бобслейнике, в facebook выдается сообщение об ошибке:

"You cannot access this page directly"

URL-адрес заканчивается как:

http://mydomain.com/hybridauth/default/callback?hauth.start=Facebook&hauth.time=1393106016

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

            # Init Hybrid_Auth
        try {
            // Check if Hybrid_Auth session already exist
            if ( ! isset( $_SESSION["HA::CONFIG"] ) ) { 
                header( "HTTP/1.0 404 Not Found" );
                die( "You cannot access this page directly." );
            }

Как я могу обеспечить обратную связь facebook с тем же сеансом и успешно подписываться на hybridauth?

Ответы

Ответ 1

Это связано с именем PHP SESSION Если у вас есть имя сеанса изменения в файле-хранилище Yii. Затем вам нужно добавить этот session_name('samar_v4'); в файл protected/modules/user/vendors/hybridauth/Hybrid/Endpoint.php при запуске functoin authInit

Ответ 2

Проверьте URL-адрес перенаправления Facebook. Facebook не разрешает множественные URL-адреса переадресации. Поэтому каждый раз, когда вы меняете свой хостинг/домен/адрес, вам придется перенастроить URL-адрес перенаправления приложений Facebook или использовать другой набор учетных данных.

Также ваш URL-адрес перенаправления должен быть примерно таким: http://mydomain.com/hybridauth/?hauth.done=Facebook

Ответ 3

Это сработало и для меня:

"base_url" = > " https://example.com/inc/hybridauth/",

Я изменил его на

"base_url" = > "https://". $_ SERVER ['HTTP_HOST']. "/inc/hybridauth/",

Ответ 4

Для меня это работало в основном домене, но не на субдомене. Я решил, что причиной этого была base_url в config.php.

Вместо

"base_url" => "https://mydomain.com/inc/hybridauth/",

Я изменил его на

"base_url" => "https://".$_SERVER['HTTP_HOST']."/inc/hybridauth/",

Теперь он работает везде, где я его разместил.

Ответ 5

Для всех, кто борется с этой проблемой и не связан с проблемой регистрации www-домена, моя проблема связана с невозможностью записи в каталог сеанса php. Не знаете, как и когда он был изменен, но если вы не можете писать в /var/lib/php/ 5.5/session, hybridauth не будет работать.

Ответ 6

В соответствии с другими ответами, я считаю, что это проблема сеанса, возможно, сеанс запущен под неправильным доменом, а затем не может быть повторно выбран в другом домене.

Я решил это, удалив различные настройки ServerAlias ​​из моей конфигурации Apache для разработки.

это "вызвало" ошибку:

ServerName mydomain.com.au.localhost
ServerAlias www.mydomain.com.au.localhost
ServerAlias localhost.mydomain.com.au        # << using this one

это зафиксировало ошибку:

#ServerName mydomain.com.au.localhost
#ServerAlias www.mydomain.com.au.localhost
ServerName localhost.mydomain.com.au        # << using this one

apachectl restart

(Обычно я использую mydomain.com.au.localhost, поэтому я оставляю их для дальнейшего использования.)

Ответ 7

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

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

Ответ 8

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

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

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

Обнять и Приветствую всех!

Ответ 9

Я решил, что ваша конкретная ошибка HybridAuth "Вы не можете получить доступ к этой странице напрямую" с именем домена в cookie сеанса. Мое приложение существует на субдомене, и я настроил перенаправление, чтобы указать на socialize.sub.domain.tld, а файл cookie не достиг точки _Endpoint.

Изменение домена сеанса в домене .domain.tld решило его. - Надеюсь, это поможет:)