Ver Mensaje Individual
  #11 (permalink)  
Antiguo 05/12/2010, 23:22
danneg
Invitado
 
Mensajes: n/a
Puntos:
[Aporte] Loguear con facebook

Bien, al final si tube tiempo para poder subir lo que utilize, notablemente es menos codigo del qu pense que estaba utilizando

Sugeriria ponerlo como aporte

ya que muchos buscan este tipo de informacion y en muchos lugares siempre es lo mismo, muy enredado sin explicacion y aveces no sirve

bien, comensemos
------------------------------------
(aclaro, el archivo lo llame facebookConnect.php y lo llame al index con php (include))


Para comenzar partire por partes el codigo para una explicacion y al final incluire el codigo completo

tambien aclaro que utilize jQuery
------------------------------------

Aqui es puro html, es el boton Conectar con facebook (#login)
y la capa donde se hacen las peticiones de facebook (#fb-root)
llamamos tambien a la api de facebook, cambiando el lenguaje de la api en donde dice lenguaje

( para español utilizen es_ES )

aqui todos los lenguajes, los buscas de esta formaKlingon FB tl_ST lenguaje + FB + lg_LG

Código HTML:
Ver original
  1. <a href="#" id="login">Entrar con facebook</a>
  2. <div id="fb-root"></div>
  3. <script type="text/javascript" src="http://connect.facebook.net/[B]lenguaje[/B]/all.js"></script>

Aqui va lo que en verdad nos interesa

Esta seccion comprueba si el usuario esta logueado en facebook, osea que anteriormente ya se logueo dentro de nuestra pagina y acepto los permisos
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.  
  3. // Se inicializa la api de acuerdo a tus datos y configuraciones
  4.  
  5.     FB.init({
  6.  
  7.  //Este es tu id de aplicacion de facebook que debiste ya haber registrado, esto es muy importante
  8.  
  9.         appId: '3452523624',
  10.  
  11. // Esto copialo y pegalo tal y como esta
  12.  
  13.         status: true,
  14.         cookie: true,
  15.         xfbml: true
  16.     });
  17.  
  18. // Al cargar la pagina se hace el logueo
  19.  
  20.     $(document).ready(function(){
  21.  
  22. // Pregunta si estas logueado en fcebook, esta funcion te devuelve un callbak ( response ) true/false
  23.  
  24.         FB.getLoginStatus(function(response) {
  25.  
  26. // if existe una session...
  27.  
  28.             if (response.session) {
  29.  
  30. // cargamos el api y buscamos al usuario local, osea el logueado ( /me )
  31. // te devuelve un callback, un objeto que almacena todos los [URL="http://developers.facebook.com/docs/reference/api/user"]datos del usuario[/URL]
  32.  
  33.                 FB.api('/me', function (usuario) {
  34.  
  35. // Doy señales de que el usuario esta logueado mostrando su nombre ( usuario.name )
  36.  
  37.                     $("#fb_connect").append('<span id="welcome">Bienvenido <strong>' + usuario.name + '</strong> | <a id="logout" href="#">Cerrar seción</a></span>');
  38.  
  39. // Oculto el boton de logueo
  40.  
  41.                     $("#login").hide();
  42.                 });
  43.             }
  44.         });
  45.     });
  46.  
  47. // Si el usuario no esta loguado, y pulsa el boton de loguear
  48.  
  49.     $('#login').click(function (e) {
  50.         e.preventDefault();


Bien, ahora, aqui se hara el proseso de login por primera vez
Código Javascript:
Ver original
  1. // Hacemos el login, FB.login te devuelve un callback ( response )
  2.  
  3.         FB.login(
  4.             function(response) {
  5.  
  6. // si el logueo fue correcto...
  7.  
  8.                 if (response.session) {
  9.  
  10. // verifico que existan permisos, si no le pido los permisos
  11.  
  12.                     if (response.perms) {
  13.  
  14. // aqui solicito los datos del usuario ( /me )
  15.  
  16.                         FB.api('/me', function (usuario) {
  17.  
  18. // variable global para almacenar el url de la foto de perfil
  19.  
  20.                             var fb_pic;
  21.  
  22. // consulto de la base de datos la foto
  23.  
  24.                             FB.api(
  25.                                 {
  26.  
  27. // utilizando [URL="http://developers.facebook.com/docs/reference/fql/"]fql[/URL] ( facebook query languaje )
  28.                                     method: 'fql.query',
  29.  
  30. // selecciono la columna "pic" de la tabla "user" donde "uid" es igual al id del usuario ( usuario.id )
  31.  
  32.                                     query: 'SELECT pic FROM user WHERE uid=' + usuario.id
  33.                                 },
  34.  
  35. //te devuelve el dato por callback
  36.  
  37.                                 function(response) {
  38.  
  39. // y te devuelve un array con todas las fotos, las que nos interesa es la primera, que es la del perfil
  40.  
  41.                                     fb_pic = response[0].pic;
  42.                                 }
  43.                             );
  44.  
  45. // ahora a enviar los datos a nuestro archivo de registro por post (ustedes sabran como hacer el sistema de registro)
  46.                             $.post(
  47.                                 "fb/fb-register.php",
  48.                                 {
  49.  
  50. // declaro los datos y les asigno el valor, del usuario, usuario.dato
  51.  
  52.                                     idUser: usuario.id,
  53.                                     name: usuario.name,
  54.                                     link: usuario.link,
  55.                                     pic: fb_pic,
  56.                                     email: usuario.email,
  57.                                     website: usuario.user_website
  58.                                 }
  59.                             );
  60.  
  61. // despues muestro señal que el usuario ya esta loguado
  62.  
  63.                             $("#fb_connect").append('<span id="welcome">Bienvenido <strong>' + usuario.name + '</strong> | <a id="logout" href="#">Cerrar seción</a></span>');
  64.                             $("#login").hide();
  65.                         });
  66.                     }
  67.                 }
  68.             },
  69.  
  70. // aqui declaro los [URL="http://developers.facebook.com/docs/authentication/permissions"]permisos[/URL] que quiero pedir
  71.             { perms: 'user_website, email' }
  72.         );
  73.     });


Y por ultimo, mostramos el boton de cerrar secion
Código Javascript:
Ver original
  1. // como el enlace para cerrar session se crea a mitad del proseso de logueo, hay que crear un evento para tal
  2. // con ayuda de jquery lo creamos, cuando este elemento este vivo le asignamos el evento click
  3.  
  4.     $('#logout').live("click", function(e){
  5.  
  6. // esto desata el logout, logout no tiene callback
  7.  
  8.         FB.logout(function(){
  9.  
  10. //ocultamos informacion de login
  11.  
  12.             $("#welcome").hide();
  13.  
  14. // muestro el boton de logueo
  15.  
  16.             $("#login").show();
  17.             e.preventDefault();
  18.         });
  19.     });
  20. </script>

-----------------------------------------
y bien eso seria todo, el resto es imaginacion y cosa suya

a continuacion les dejo el codigo completo

Código Javascript:
Ver original
  1. <a href="#" id="login">Entrar con facebook</a>
  2. <div id="fb-root"></div>
  3. <script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>
  4. <script type="text/javascript">
  5.     var nombre;
  6.     var link;
  7.     var imagen;
  8.     FB.init({
  9.         appId: '000',
  10.         status: true,
  11.         cookie: true,
  12.         xfbml: true
  13.     });
  14.     $(document).ready(function(){
  15.         FB.getLoginStatus(function(response) {
  16.             if (response.session) {
  17.                 FB.api('/me', function (usuario) {
  18.                     $("#fb_connect").append('<span id="welcome">Bienvenido <strong>' + usuario.name + '</strong> | <a id="logout" href="#">Cerrar seción</a></span>');
  19.                     $("#login").hide();
  20.                 });
  21.             }
  22.         });
  23.     });
  24.     $('#login').click(function (e) {
  25.         e.preventDefault();
  26.         FB.login(
  27.             function(response) {
  28.                 if (response.session) {
  29.                     if (response.perms) {
  30.                         FB.api('/me', function (usuario) {
  31.                             var fb_pic;
  32.                             FB.api(
  33.                                 {
  34.                                     method: 'fql.query',
  35.                                     query: 'SELECT pic FROM user WHERE uid=5526183'
  36.                                 },
  37.                                 function(response) {
  38.                                     fb_pic = response[0].pic;
  39.                                 }
  40.                             );
  41.                             $.post(
  42.                                 "fb/fb-register.php",
  43.                                 {
  44.                                     idUser: usuario.id,
  45.                                     name: usuario.name,
  46.                                     link: usuario.link,
  47.                                     pic: fb_pic,
  48.                                     email: usuario.email,
  49.                                     website: usuario.user_website
  50.                                 }
  51.                                             $("#login").hide();
  52.                         });
  53.                     }
  54.                 }
  55.             },
  56.             { perms: 'user_website, email' }
  57.         );
  58.     });
  59.     $('#logout').live("click", function(e){
  60.         FB.logout(function(){
  61.             $("#welcome").hide();
  62.             $("#login").show();
  63.             e.preventDefault();
  64.         });
  65.     });
  66. </script>

y si tienen alguna duda, encuentran un error, o tienen una sugerencia, por favor de postearla!!

saludos y suerte, y de nuevo muchas gracias a dual3nigma

------------------------------

si alguno duda de su funcionamiento... lo pueden ver trabajando en

http://dannegm.com

como mencione esta incluido en el index

Última edición por danneg; 05/12/2010 a las 23:36