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