Buenas,
He cambiado la forma de hacerlo para tener un poco más de información de qué hace y qué no y el caso es que con este código nunca entra en la condición de facebook loegged in nos propone
Entra.php
Código PHP:
<?
session_start();
if($_SESSION['logueado'])
echo "<p>logueado</p>";
else
echo "<p> no logueado</p>";
require( '../../facebook/facebook.php'); //Ruta de la api...
$Aplicacion = 'key'; //No olvides ingresar la key de tu aplicación
$ClaveSecreta = 'pass'; //No olvides ingresar la clave proporcionada por FB
$Facebook = new Facebook($Aplicacion, $ClaveSecreta);
$logueado = 0;
[B]if($Facebook->get_loggedin_user()){
echo "<p>Entramos en la condición 'get_loggedin_user'</p>";[/B]
//obtenemos el id del user en FB
try //probamos de obtener los datos de la sesión
{
$fid = $Facebook->require_login();
$user_details = $Facebook->api_client->users_getStandardInfo($fid, array('last_name','first_name')); //intentamos obtener un poco de información del perfil
$Nombre = $user_details[0]['first_name']; //Almacenamos los datos del array
$Apellido = $user_details[0]['last_name']; //Seguimos con la matriz, esta vez almacenamos el Apellido
$nombreusuario = $Nombre." ".$apellido;
$logueado = 1;
$_SESSION["s_username"] = $nombreusuario;
$_SESSION['logueado'] = $logueado;
echo "<p>Usuario logueado - </p>".$_SESSION['s_username'];
}
catch(Exception $e) //Intentamos capturar algún error debido a si la sesión venció, o el usuario cerró sesión desde FB o cualquier otro motivo que haya producido la caducación de la sesión y por lo tanto un error
{
$logueado = 0; //si es asi, si pasó algo de eso, informamos que entonces NO estamos logueados (antes por existir un $uid dijimos que lo estabamos)
echo "<p>catch exceptcion</p>";
}
$sql = " SELECT * FROM `users` WHERE fid=$fid ORDER BY fecha DESC";
$rs = mysql_query($sql, $con);
if(mysql_num_rows($rs)>0){
echo "<p>hemos pasado por aqui<p>"; //el usuario ya había entrado alguna vez - no registro
}else{
$sqlInsertNot = mysql_query("INSERT INTO users
(username, fid)
VALUES ('$nombreusuario', '$fid')",
$con) or die(mysql_error()); // es la primera - registro
//inicio sesion?
}
}
if ($_POST['username'] && $_POST['enviar'] == "Login"){
//Comprobacion del envio del nombre de usuario y password
$username=$_POST['username'];
$password=$_POST['password'];
if ($password==NULL) {
echo "<p>La password no fue enviada</p>";
}else{
$query = mysql_query("SELECT username,password FROM users WHERE username = '$username'") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data['password'] != $password) {
echo "<p>Login incorrecto</p>";
}else{
$_SESSION['s_username'] = $username;
$logueado = 1;
$_SESSION['logueado'] = $logueado;
}
}
}
if($logueado==1){
$_SESSION["logueado"] = $logueado;
header("Location: http://laspruebasdetoni.netau.net/php/panelcontrol.php");
}else
echo "<p> no logueado end</p>";
Me estoy fijando en que se declara un objeto facebook cada vez que se carga la página; puede ser que se machaque info? o incluso que en los files de facebook utilice otro objeto o algo?
Esque ahora para el inicio normal y fb tengo las mismas variables y hago la comprobación al final, y con el primero funciona pero el segundo nunca (se abre la ventana ajax, se cierra -ya no va a ninguna url desconocida- y volvemos al entra.php sin ningun echo que 'hemos entrado en la condición') me remite al panel de control, bueno, de hecho nunca entra en la condición superior...
respecto a $_SESSION ya no se si el nombre de l variable 'usuario' o 'logueado' tiene que ir entre ' o entre " pues he visto de todo... (y no se por qué no lo encuentro en el manual de PHp :S)
HElp?
:D
--------------------edit---------------------
he decidido pasarle en onlogin otra url, que es entrafb.php
bien, el código de la misma es:
Código PHP:
session_start();
require( '../../facebook/facebook.php'); //Ruta de la api...
$Aplicacion = 'sdf'; //No olvides ingresar la key de tu aplicación
$ClaveSecreta = 'asd'; //No olvides ingresar la clave proporcionada por FB
$Facebook = new Facebook($Aplicacion, $ClaveSecreta);
try //probamos de obtener los datos de la sesión
{
$fid = $Facebook->require_login();
$nombreusuario = $Facebook->get_loggedin_user();
}
catch(Exception $e) //Intentamos capturar algún error debido a si la sesión venció, o el usuario cerró sesión desde FB o cualquier otro motivo que haya producido la caducación de la sesión y por lo tanto un error
{
$logueado = 0; //si es asi, si pasó algo de eso, informamos que entonces NO estamos logueados (antes por existir un $uid dijimos que lo estabamos)
echo "<p>catch exceptcion</p>";
}
$logueado = 1;
$_SESSION['s_username'] = $nombreusuario;
$_SESSION['logueado'] = $logueado;
if($logueado==1){
$_SESSION["logueado"] = $logueado;
header("Location: http://laspruebasdetoni.netau.net/php/panelcontrol.php");
}else
echo "<p> no logueado end</p>";
?>
El caso es que al iniciar la sesion con fb connoect, me lleva a Facebook y me dice
Cita: Tecla API inválida
La aplicación que intentas utilizar no existe o ha sido deshabilitada.
El caso es que en fb me puedo meter, en la aplicacion también, las keys id y clave estan bien puestas... :S:S:S
---edit---
solucionado!!!!!! con
entrafb.php
Código PHP:
session_start();
require( '../../facebook/facebook.php'); //Ruta de la api...
$Aplicacion = 'fff'; //No olvides ingresar la key de tu aplicación
$ClaveSecreta = 'fff'; //No olvides ingresar la clave proporcionada por FB
$Facebook = new Facebook($Aplicacion, $ClaveSecreta);
$fid = $Facebook->require_login();
$user_details = array();
$user_details = $Facebook->api_client->users_getInfo($fid, array('last_name','first_name','pic_big_with_logo','email'));
$first_name = $user_details[0]['first_name'];
$last_name = $user_details[0]['last_name'];
$email = $user_details[0]['email'];
$pic_url = $user_details[0]['pic_big_with_logo'];
$nombreusuario = $first_name." ".$last_name;
$logueado = 1;
$_SESSION['s_username'] = $nombreusuario;
$_SESSION['logueado'] = $logueado;
$sql = " SELECT * FROM `users` WHERE fid=$fid ORDER BY fecha DESC";
$rs = mysql_query($sql, $con);
if (empty($sql)) {
$sqlInsertNot = mysql_query("INSERT INTO users
(username, email, fid)
VALUES ('$nombreusuario','$email', '$fid')",
$con) or die(mysql_error()); // es la primera - registro
//inicio sesion?
}
header("Location: http://laspruebasdetoni.netau.net/php/panelcontrol.php");
qué cosas...