php - composer - "No puedes acceder a esta página directamente"-Hybrid Auth
hybridauth 3 (9)
Estoy hospedando mi aplicación PHP Yii en AWS Elastic Beanstalk y, por lo tanto, uso la base de datos para almacenar sesiones. Implementé exitosamente el inicio de sesión de Facebook usando Hybridauth en un entorno de alojamiento compartido. Cuando recibo en Elastic Beanstalk el nombre de usuario de Facebook da el error:
"You cannot access this page directly"
La URL termina como:
http://mydomain.com/hybridauth/default/callback?hauth.start=Facebook&hauth.time=1393106016
Aprendí de aquí que esto está relacionado con Facebook llamando a la aplicación pero encontrando una sesión diferente. Endpoint.php luego arroja el error:
# 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." );
}
¿Cómo puedo garantizar que las llamadas de Facebook vuelvan a la misma sesión y que inicie sesión con hybridauth?
Encontré este problema que parece insoluble. Me estaba dando por vencido, fue entonces cuando mi instinto me llevó a hacer una prueba y todo estaba funcionando.
Para cualquier persona con el mismo problema, tenga una pregunta: ¿el archivo que llama a la API está en el mismo directorio?
Solo funcioné cuando puse mi archivo en la misma carpeta que el archivo config.php . Pruébalo allí y dime si funciona.
Un abrazo y un saludo a todos!
Es debido al nombre de SESSION de PHP. Si tiene un nombre de sesión de cambio en el archivo de confiuración de Yii. Luego debe usar add this session_name(''samar_v4'');
en archivo protected/modules/user/vendors/hybridauth/Hybrid/Endpoint.php
en el inicio de functoin authInit
Esto funcionó para mí también:
"base_url" => " https://example.com/inc/hybridauth/ ",
Lo cambié a
"base_url" => "https: //". $ _ SERVER [''HTTP_HOST'']. "/ inc / hybridauth /",
Para cualquier otra persona que tenga problemas con este problema, y no está relacionado con el problema de registro de www-domain, mi problema tenía que ver con no poder escribir en el directorio de la sesión de php. No estoy seguro de cómo o cuándo se modificó, pero si no puede escribir en /var/lib/php/5.5/session, hybridauth no funcionará.
Para mí, funcionó en el dominio principal, pero no en un subdominio. Me di cuenta de que era la base_url en config.php que causó el error.
En lugar de
"base_url" => "https://mydomain.com/inc/hybridauth/",
Lo cambié a
"base_url" => "https://".$_SERVER[''HTTP_HOST'']."/inc/hybridauth/",
Ahora funciona en cualquier lugar donde lo ponga.
Resolví mi error particular HybridAuth "No se puede acceder a esta página directamente" con el nombre de dominio en la cookie de sesión. Mi aplicación existe en un subdominio y diseñé la redirección para apuntar a socialize.sub.domain.tld, y la cookie no llegaba al _Endpoint.
Cambiar el dominio de sesión a .domain.tld lo resolvió. - Espero que esto ayude :)
Según las otras respuestas, creo que se trata de un problema de sesión, tal vez la sesión se inicie en el dominio incorrecto y luego no se pueda volver a buscar en el otro dominio.
Lo resolví eliminando varias configuraciones de ServerAlias de mi configuración de Apache de desarrollo.
esto ''causó'' el error:
ServerName mydomain.com.au.localhost
ServerAlias www.mydomain.com.au.localhost
ServerAlias localhost.mydomain.com.au # << using this one
esto solucionó el error:
#ServerName mydomain.com.au.localhost
#ServerAlias www.mydomain.com.au.localhost
ServerName localhost.mydomain.com.au # << using this one
apachectl restart
(Normalmente uso mydomain.com.au.localhost así que los dejo para su uso posterior).
Tuve el mismo problema al utilizar Hybrid Auth 2.8. Se relaciona con nuestro controlador de sesión personalizado que se establece mediante session_set_save_handler()
. Hybrid Auth usa sesiones PHP estándar, por lo que luego de redirigir y abrir una nueva sesión, Hybrid Auth comienza a usar sesiones estándar de archivos PHP en lugar de su gestor de sesión personalizado. Esto da como resultado la pérdida de datos de configuración de nuestra sesión y la obtención de este mensaje de error.
Resolví este problema agregando nuestro propio manejador de sesión personalizado en la parte superior de hybridauth/index.php
(ubicado en el mismo directorio que config.php
y live.php
). Esto obliga a Hybrid Auth a usar su controlador de sesión personalizado.
Verifique la URL de redireccionamiento de su aplicación de Facebook. Facebook no permite múltiples URL de redirección. Por lo tanto, cada vez que cambie su hosting / dominio / dirección, tendrá que volver a configurar la URL de redireccionamiento de la aplicación de Facebook o usar un conjunto diferente de credenciales.
También su URL de redireccionamiento debería ser algo como esto: http://mydomain.com/hybridauth/?hauth.done=Facebook