jueves, 24 de septiembre de 2015

Facebook SDK returned an error: Cross-site request forgery validation failed. The “state” param from the URL and session do not match.

Hoy al estar haciendo pruebas con Facebook Login me tope con el siguiente error:

Facebook SDK returned an error: Cross-site request forgery validation failed. The “state” param from the URL and session do not match.

Y buscando en Google encontré una solución que me solucionó mi problema y fue esta:

Después de llamar a la función para obtener el enlace de la dirección para conectarnos a Facebook debemos escribir el siguiente código.

/** Función para obtener el enlace para conectarnos a Facebook **/
$uri=$helper->getLoginUrl($uri, $permissions);

/** Código para solventar el error **/
foreach ($_SESSION as $k=>$v) {
    if(strpos($k, "FBRLH_")!==FALSE) {
        if(!setcookie($k, $v)) {
        } else {
            $_COOKIE[$k]=$v;
        }
    }
}
Y en nuestra página de login-callback.php antes de cualquier otro código escribirmos el siguiente:

foreach ($_COOKIE as $k=>$v) {
    if(strpos($k, "FBRLH_")!==FALSE) {
        $_SESSION[$k]=$v;
    }
}
Por último no hay que olvidarnos del código de sesión

if(!session_id()) {
    session_start();
}
...
...
...
...
<?php session_write_close() ?>

No hay comentarios.:

Publicar un comentario