Bien, hace tiempo que ya no tengo un problema y/o duda, pero en esta ocasion ya me atore demasiado
Bien, lo que trato de hacer, es justamente lo que dice el titulo, loguear con facebook
clasico, logueo y registro
bien, creo que me he complicado bastante en estos puntos
lo que estoy haceindo es lo siguiente
- abrir secion de facebook
- obtener datos
- enviarlos por post via ajax par comproar existencia de usuario
- si el usuario existe lo logueo
- si no lo invito a registrarse
todo lo hago mediante ajax con ayuda de jquery (jaja que tramposo XD)
el login de facebook unicamente lo uso para obtener el id de usuario
osea el login sera un tipico user pass
en este caso el user es el id de facebook del usuario y el pass se genera en tiempo real
el problema aqui es que no se logra loguearse bien a una persona
el login de facebook fucniona bien, pero el mio es el que no
lo pueden checar aqui
http://dannegm.com (para los que se logren loguear, les mostrara un panel de escritura libre del blog, no comenten eso, aun no desarrollo la identificacion de tipo de usuarios (claro no puedo loguear usurios aun :P))
a continuacion les dejo el codigo que utilizo para hacer esto con comentarios y explicaciones
-------------------------------------------------------------------------------------
en el index llamo este archivo con php (include), que es el que se encarga de todo el login
facebookConnect.php
Código Javascript:
Ver original
<a href="#" id="login">Entrar con facebook</a> <div id="fb-root"></div> <script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script> <script type="text/javascript"> var nombre; var link; var imagen; FB.init({ appId: 'MIIDDEAPPFACEBOOK', status: true, cookie:true, xfbml: true }); document.getElementById('login').addEventListener('click', function (e) { e.preventDefault(); FB.login(function (response) { if (response.session) { var fb_idUser; var fb_name; var fb_about; var fb_link; var fb_pic; var fb_genere; document.getElementById('login').removeEventListener('click', arguments.callee, false); FB.api('/me', function (usuario) { console.log(usuario); fb_idUser = usuario.id; fb_name = usuario.name; fb_about = ""; // Lo dejo en blanco por correccion... despues lo reparo fb_link = usuario.link; fb_genere = usuario.gender; }); FB.Data.query('SELECT pic FROM user WHERE uid = me()').wait(function (filas) { fb_pic = filas[0].pic; }); // A partir de aqui explico $.post( //Compruebo si el usuario existe enmi base de datos "fb/fb-comprobar.php", { idUser: fb_idUser }, function(resultado){ if(resultado != "false"){ //Si existe //post a login $.post( // Trato de hacer login "fb/fb-login.php", { idUser: fb_idUser, // Usuario (id de facebook) pass: resultado // Contraseña (generada en tiempo real, la imprime en el callback y lo guarda en una cookie }, function(login){ // Resibe la contraseña generada if(login != "false"){ // Si la contraseña coincide con el cookie, se loguea correctamente al usuario msgAlert("Estas logueado!!"); location.href= "http://dannegm.com"; }else{ // Si no, mostrar error de logueo msgAlert("Ha ocurrido un incombeniente a la hora de loguear!","Error"); } } ); }else{ // Si el usuario no existe en mi bd // Invitarlo a registrarse msgConfirm("Actualmente no estas registrado en este sitio, para poder comentar, publicar y demas cosas debes registrarte.<br /><br />¿Deseas hacerlo?","Registrate", function(result){ if(result==true){ // Si acepta, obtengo sus datos de facebook y los registro y lo logueo $.post( "fb/fb-register.php", { idUser: fb_idUser, name: fb_name, about: fb_about, link: fb_link, pic: fb_pic, genere: fb_genere }, function(login){ if(login != "false"){ msgAlert("Estas logueado!!"); location.href= "http://dannegm.com"; }else{ msgAlert("No estas logueado!!"); } } ); } // Si no, simplemente no se hace el logueo } ); } } ); } }); }, false); </script>
Este archivo comprueba existencia de usuario y genera la contraseña
fb/fb-comprobar.php
Código PHP:
Ver original
<?php include("../includes/config.php"); // Incluir los datos de conexion mysql $idUser = $_POST["idUser"]; // Resivir el id del usuario // Establecer conexion a MySQL if (!$conexion){ } // Estableser conexion a la base de datos if (!$seleccionar_bd){ } // Generar consulta, buscamos al usuario en la base de datos $sql = "SELECT id FROM usuarios WHERE id='" . $idUser . "'" ; // Ejecutar consulta //No existe usuario }else{ //Existe usuario y devuelve la contraseña } ?>
Este archivo hace la validacion de datos y permite el login
fb/fb-login.php
Código PHP:
Ver original
<?php $idUser = $_POST["idUser"]; // Resivo id de usuario $pass = $_POST["pass"]; // Resivo contraseña anteriormente generada if ($pass == $_COOKIE["pass"]){ // Si la contraseña es correcta include("../includes/config.php"); // Establecer conexion a MySQL if (!$conexion){ } // Establecer conexion a la bd if (!$seleccionar_bd){ } // Obtengo el nombre del usuario $sql = "SELECT nombre FROM usuarios WHERE id = '" . $idUser . "'"; $name = $row['nombre']; } // Logueo al usuario, guardo la secion abierta (true), el id de usuario y su nombre }else{ // Si la contraseña es incorrecta (por algun span, usuario malisioso, etc) } ?>
Y finalmente este archivo hace el registro del usuario
fb/fb-register.php
Código PHP:
Ver original
<?php // Declaro los datos que voy a registrar $idUser = $_POST["idUser"]; $name = $_POST["name"]; $about = $_POST["about"]; $link = $_POST["link"]; $pic = $_POST["pic"]; $genere = $_POST["genere"]; $age = "1993-04-01"; $tipo = "normal"; $nombreautor = "unname"; // Conecto a bd include("../includes/config.php"); if (!$conexion){ } if (!$seleccionar_bd){ } // Inserto los datos en el registro $sql = "INSERT INTO usuarios (id, nombre, nombredeautor, email, urlfoto, urlperfil, edad, sexo, fechaderegsitro, tipo) VALUES ('" . $idUser . "', '" . $name . "', '" . $nombreautor . "', '" . $email . "', '" . $pic . "', '" . $link . "', '" . $age . "', '" . $genere . "', '" . $date . "', '" . $tipo . "')"; if (!$query){ }else{ // Si todo fue correcto, logeo al usuario } ?>
Nota: msgAlert(); y msgConfirm(); son mis verciones de los famosos Alert(); y Confirm();
-------------------------------------------------------------
Bien, si alguien tiene idea de donde esta mi problema (que creo que esta en el archivo de comprovacion) por favor ayudenme
Seguire invetigando mi error, y tratar de solucionarlo
Igual cualquier duda y/o sugerencia decirme!!
Todos los comentarios productivos (me agraden o no) son bienvenidos!!
de antemano gracias!!