Ver Mensaje Individual
  #10 (permalink)  
Antiguo 26/04/2009, 06:10
Bam_Margera
 
Fecha de Ingreso: febrero-2009
Mensajes: 580
Antigüedad: 15 años, 8 meses
Puntos: 13
Respuesta: [APORTE] Usar Facebook Connect

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...

Última edición por Bam_Margera; 26/04/2009 a las 14:35