"Вы не можете получить доступ к этой странице напрямую" - 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 решило его. - Надеюсь, это поможет:)