Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/01/2014, 12:04
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con el login a través de facebook y php

Cita:
¿Y qué estás haciendo para depurar lo que sucede?
Efectivamente, estoy usando firebug para depurar el código, solo que he omitido esa línea pues pensaba que no era necesaria, voy a intentar ser mas específico.

Código PHP:
function fbLogin(){
     require_once (
$_SERVER['DOCUMENT_ROOT'].'/es/framework/classes/'.'facebook.php');
     require_once(
$_SERVER['DOCUMENT_ROOT'].'/es/framework/other_components/FirePHPCore/'.'FirePHP.class.php');
     
ob_start();
     
$firephp FirePHP::getInstance(true);
     
$facebook = new Facebook(array(
          
'appId' => '378488665495077',
          
'secret' => 'ae069a1151f723fa251966b2f4632614',
     ));
     
$user $facebook->getUser();
     
$firephp->log($user);
     if (
$user){
          try{           
        
$user_profile $facebook->api('/me');
      }catch(
FacebookApiException $e){
           
error_log($e);
           
$user null;
      }
    }else{
    
$login_url $facebook->getLoginUrl(array( 'scope' => 'email'));
    
$login_url = (str_replace("framework%2Fmethods%2Fajax%2Flogin_facebook.php""page/home.inc.php"$login_url));
    
$firephp->log($login_url);
        
//print_r ($login_url);
    //header("Location: " . $login_url);
    
}

Lo que estoy haciendo en primer lugar es incluir todas las funciones que hay en el fichero facebook.php descargado desde la página.
facebook.php tiene en su interior una llamada a base_facebook.php con mas funciones.

La idea es que utlizando la variable facebook que contiene el apId y el código secreto, intento obtener el usuario a partir de una sesión, si $user está vacio, entonces se me va por el else de abajo del todo y crea una nueva sesión.

Al principio encontré un error ya que parte de la url que retornaba getLoginUrl(); me devolvía la localización del fichero login_facebook.php pero lo corregí substituyendo esa parte con un str_replace(). Comprobaba lo que me devolvía $login_url y veía que estaba todo correcto, así que quería crear una redirección con header a esa url.

El problema es que cuando descomento la línea que contiene la etiqueta header para redireccionarme a la página de facebook para que ingrese el usuario y contraseña si no está habilitado el acceso automático obtengo este error:

CHROME: XMLHttpRequest cannot load https://www.facebook.com/dialog/oaut....3&scope=email. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://mipagina.com' is therefore not allowed access.

FIREFOX: POST http://mipagina.com/es/framework/met...n_facebook.php 302 Found 158ms (EN ROJO)

Encabezados de respuesta
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection keep-alive
Content-Length 0
Content-Type text/html
Date Sun, 12 Jan 2014 18:05:21 GMT
Expires Thu, 19 Nov 1981 08:52:00 GMT
Location https://www.facebook.com/dialog/oaut....3&scope=email
Pragma no-cache
X-Powered-By PHP/5.3.24
X-Wf-1-1-1-1 112|[{"Type":"LOG","File":"\/home\/u550260325\/public_html\/es\/framework\/classes\/UIModules.php","Line":"56"},"0"]|
X-Wf-1-Index 1
X-Wf-1-Plugin-1 http://meta.firephp.org/Wildfire/Plu...irePHPCore/0.3
X-Wf-1-Structure-1 http://meta.firephp.org/Wildfire/Str...bugConsole/0.1
X-Wf-Protocol-1 http://meta.wildfirehq.org/Protocol/JsonStream/0.2
Encabezados de solicitud
Accept */*
Accept-Encoding gzip, deflate
Accept-Language es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3
Cookie PHPSESSID=0rcurd36pvpvp8n3rrj3kaogb6
DNT 1
Host mipagina.com
Referer http://mipagina.com/es/index.php
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0
X-Requested-With XMLHttpRequest


Por supuesto, ni redirección ni nada