2012-05-13 21 views
5

Por favor, necesito ayuda. ¡Estoy lidiando con este problema por 1 mes!Facebook-connect da un bucle de redirección

Me gustaría implementar el inicio de sesión de Facebook Connect a mi sitio web, usando PHP y php-sdk 3.1.1. En pocas palabras, mi código funciona sin conexión (en localhost) pero no en línea, lo que da como resultado "Demasiados bucles de redirección (en Chrome)": Error 310 (net :: ERR_TOO_MANY_REDIRECTS): hubo demasiados redireccionamientos.

Aquí está mi código:

1/me carga Facebook Connect SDK y init que:

require 'src/facebook.php'; 
    $facebook = new Facebook(array(
     'appId' => '209633612480053', 
     'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx' 
    )); 

Por favor, tenga en cuenta que he creado dos aplicaciones en la página de facebook-developper, uno para pruebas fuera de línea, y el otro para pruebas en línea. Y estoy seguro de que cambiaré correctamente entre los dos pares de appId/secret (en línea y fuera de línea) cuando realice la prueba. Por lo tanto, no es el problema de bad facebbok-connect init.

2/I tratar de conseguir información del usuario:

$uid = $facebook->getUser(); 

    if($uid) 
    { 
    /* 
     * Get user information. 
     */ 
    $user = $facebook->api('me/'); 
    print_r($user); // Display user info. 
    } 
    else 
    { 
    /* 
     * Redirect to FB login URL to allow access. 
     */ 
    $loginURL = $facebook->getLoginURL(); 
    echo '<script> top.location.href=\''.$loginURL.'\'</script>'; 
    } 

Es tan simple como eso: Si ic usuario conectado a Facebook, por lo que muestran es la información, de lo contrario, redirigir a la página de inicio de sesión de Facebook para permitir el acceso.

Funciona perfectamente fuera de línea, pero en línea, me sale un error de cromo:

This webpage has a redirect loop 
The webpage at https://www.facebook.com/dialog/oauth?client_id=209633612480053&redirect_uri=http%3A%2F%2Fwww.bluward.com%2Foauth%2Ffacebook&state=551f60cd4be6cd8ed1622f8168a5219a#_=_ has resulted in too many redirects. Clearing your cookies for this site or allowing third-party cookies may fix the problem. If not, it is possibly a server configuration issue and not a problem with your computer. 

Alguna información adicional: Online, yo uso proveedor de alojamiento 1and1, y estar seguro de tener la misma configuración del servidor de servidor fuera de línea (que es un MAMP Pro), cargué el archivo sams php.ini.

Por favor, si alguien tiene una idea u obtienes un problema similar, estaré encantado de tener ayuda.

Gracias de antemano por toda ayuda.

ACTUALIZACIÓN:

He actualizado mi código para centrarse en la línea problemática, por lo que en lugar de redireccionar a la página de inicio de sesión de Facebook, que mostrará la URL de redireccionamiento, por lo que sólo tiene que hacer clic para iniciar sesión:

$uid = $facebook->getUser(); 

    if($uid) 
    { 
    /* 
     * Get user information. 
     */ 
    $user = $facebook->api('me/'); 
    print_r($user); // Display user info. 
    } 
    else 
    { 
    /* 
     * Redirect to FB login URL to allow access. 
     */ 
    $loginURL = $facebook->getLoginURL(); 
    echo $loginURL; // <-- HERE I CHANGED THE CODE TO DISPLAY LOGIN URL 
    } 

Lo que noté es que Facebook redirige infinitamente a la página de mi script. Solo el parámetro code en la barra de direcciones URL cambia.

Entonces, ¿por qué facebbok está redireccionando a la página de mi script sin darme la información del usuario?

¿Alguna idea?

+0

¿Ha habilitado las cookies en su navegador? – AlphaMale

+0

Sí, por supuesto. Utilizo la configuración que permite establecer los datos locales (recomendado). – htaidirt

+0

extraño entonces. colocar una salida después de $ loginURL = $ facebook-> getLoginURL(); y luego actualiza si todavía redirige. – AlphaMale

Respuesta

5

he tenido este problema, en mi caso tuve que editar base_facebook.php desde el SDK:

public static $CURL_OPTS = array(
    CURLOPT_CONNECTTIMEOUT => 10, 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_TIMEOUT  => 60, 
    CURLOPT_USERAGENT  => 'facebook-php-3.2', 
    CURLOPT_SSL_VERIFYPEER => false, 
    CURLOPT_SSL_VERIFYHOST => false, 
); 

Las dos últimas opciones que he ido añadiendo manualmente.

+0

genio tenía el mismo problema con aredirect loop, que lo arregló para mí. –

+0

Tengo el mismo problema ... pero esta solución no funciona ... –

0

Tuve un problema similar con el navegador chrome, las cookies siempre eran incorrectas o estaban vacías.

Luego descargué un ejemplo de Facebook de Heroku (utiliza una ventana emergente como inicio de sesión en lugar de una redirección js) y noté que no funciona en cromo cuando la URL base del sitio web no es la URL raíz del servidor (por ejemplo: localhost/somedirectory/). Pero después de crear un host virtual parece que funciona.

Puede ver un ejemplo del índice.PHP desde la aplicación aquí https://gist.github.com/2845986