Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

Aporte como iniciar sesion con facebook php

La mayoría de aplicaciones Web que brindar servicios a miembros registrados, o que necesitan autenticación han implementado sus propios inicios de sesión, sin embargo para alcanzar una mayor audiencia, muchos de ellos utilizan autenticación brindada por Facebook como alternativa para registrar usuarios nuevos. En esta publicación muestro como autenticar y registrar usuarios utilizando el Facebook PHP-SDK y el Facebook Graph

¿Como funciona?

Básicamente, el flujo con que Facebook trabaja esta basado en OAuth, un protocolo diseñado para autenticación para aplicaciones Web y Desktop, cual es la manera en que OAuth funciona esta fuera del alcanze de esta publicación, sin embargo puede simplificarse en nuestro caso en lo siguiente:

Un usuario necesita autenticarse nuestro Website, para ello solicita al servidor de Facebook/OAuth sus credenciales utilizando su identificador y su clave utilizando un formulario de Login brindado por Facebook.
El Servidor de Facebook/OAuth autentica al usuario verificando sus credenciales, de aprobarse la autenticación, Facebook/OAuthpregunta al usuario si desea permitir a nuestro sitio obtener datos de su perfil (email, feeds, friends, etc)

A partir de los permisos autorizados por el usuario el servidor genera un Codigo de Retorno con cierto significado y expiración para que la aplicación especificada pueda consultar al Facebook Graph
Teniendo el Codigo de Retorno consultamos a Facebook Graph que nos genere un Token, este Token de ser válido, lo utilizariamos para consultar las demas funcionalidades del Facebook Graph, como datos de usuario, feeds, amigos, etc. Datos que nos servirían para registrar al usuario en nuestra aplicación.
Requisitos Previos

Tener una aplicación activa y configurada en Facebook
PHP 5 o superior con soporte CURL
Descargar el PHP-SDK de Facebook

Integración
Descargamos el PHP-SDK de Facebook, extramos los archivos y los colocamos en una ruta accesible de nuestros scripts php, puede ser una carpeta" includes/facebook".
Creamos un archivo en la ruta deseada, en este caso fblogin.php, el cual realiza el siguiente flujo:

Incluimos la librería del Facebook PHP-SDK
Si el programa recibe un parametro ERROR_REASON porREQUEST, es porque Facebook ya respondio con un error, en este caso cerramos y salimos del programa.

Configuramos los parametros $script_url que es el URL completo del programa fblogin.php, esto lo podemos obtener programaticamente, en este ejemplo esta escrito en una variable. Y sirve para decirle al Facebook Login a donde va a redirigir la respuesta despues que el usuario finalice los pasos del formulario de login de Facebook.
Configurar los parametros $fb_apikey y $fb_secret con los datos de nuestra aplicación registrada en Facebook
Creamos utilizando el objecto/clase Facebook PHP-SDK la variable $fbLoginURL la cual es la cadena con el URL del Login de Facebook y enviamos al usuario ahi, utilizando JavaScript.

Este $fbLoginURL no más que una cadena que contiene la ruta del formulario de login de Facebook ya con todos los parametros agregados, es como un utilitario para que no tengamos que crear el URL programaticamente, sino dejar alFacebook PHP-SDK lo construya por nosotros y evitar problemas de parametros en futuras versiones o cambios en el SDK.

NOTA: Es importante tomar en cuenta el parametro "scope", aqui ingresamos valores separados por coma de que permisos le estamos solicitando al usuario, ver los links de la parte final de esta publicación para más información.
El usuario es enviado al $fbLoginURL de Facebook fuera de nuestra aplicación, el usuario sigue los pasos del formulario y al finalizar Facebook retorna al usuario al fblogin.php pero ahora con un codigo de retorno
Ya con el codigo de retorno, le solicitamos a Facebook Graphun TOKEN, ya con este token podemos realizar consultas posteriormente a Facebook Graph.

Asignamos el Token devuelto por Facebook Graph al objecto/clase Facebook PHP-SDK para realizar cualquier consulta a Facebook Graph, pero ya como usuario autenticado, podemos obtener nombres, amigos, feeds, etc. Siempre y cuando el usuario lo hubiera autorizado anteriormente.
Consultamos a Facebook Graph la consulta /me que es simplemente obtener los datos del generales del usuario tales como email y nombres.
fblogin.php
  <?php  
  require_once('facebook/facebook.php');  
  // manejar codigo de error, si esta presente  
  if (isset($_REQUEST['error_reason'])) {  
        echo("<script>self.close();</script>");  
        exit;  
  }  
  // construir el objecto sdk de facebook  
 $script_url = 'http://www.miwebsite.com/fblogin.php';  
  $fb_apikey = 'mi_facebook_app_id';  
  $fb_secret = 'mi_facebook_app_id';  
  $facebook = new Facebook(array(  
       'appId' => $fb_apikey,  
     'secret' => $$fb_secret  
  ));  
  // obtener el codigo de respuesta  
  $code = $_REQUEST["code"];  
  // construir el URL de login de Facebook  
  $fbLoginUrl = $facebook->getLoginUrl(array(  
       'scope' => 'email',  
       'display' => 'popup',  
       'redirect_uri' => $script_url  
  ));  
  // si no existe codigo de retorno de facebook, enviarmos al usuario al formulario  
 // de login de Facebook  
 if(empty($code)) {  
       echo("<script> top.location.href='$fbLoginUrl'</script>");  
     exit;  
 } else {  
            // obtener el token de autenticacion a partir de Facebook Graph  
            $token_url = "https://graph.facebook.com/oauth/access_token?"  
              . "client_id=" . $fb_apikey . "&redirect_uri=" . urlencode($script_url)  
              . "&client_secret=" . $fb_secret . "&code=" . $code;  
            // obteenemos la respuesta y la interpretamos  
            $response = @file_get_contents($token_url);  
            $params = null;  
            parse_str($response, $params);  
            // asignamos al objecto Facebook el token para proceder a realizar  
            // llamadas al API posteriormente  
            $facebook->setAccessToken($params['access_token']);  
            $fbme = $facebook->api('/me', 'GET');  
            if ($fbme) {  
                 // teniendo el objeto Facebook ME (datos del usuario) procedemos  
        // a realizar nuestro proceso ya sea de login o registro.                 
                 proceed_login_or_register($fbme);  
            }   
 }  
  ?>
A traves de una función JavaScript asociada a algún botón, imagen, link, etc, llamamos al archivo fblogin.php
Script
 <script>  
  function fbLogin() {  
   window.open('fblogin.php','fblogin','width=600,height=400');  
  }  
 </script>  

Eso es todo lo que respecta a una integración simple de Inicio de Sesión con Facebook PHP-SDK, para más información ver los siguientes links

Descargar el arhivo fuente de fblogin.php de mi DropBox
http://dl.dropbox.com/u/12949558/fblogin.zip
Sitio desarrolladores de Facebook
http://developers.facebook.com/
Autenticación con Facebook
http://developers.facebook.com/docs/authentication/
Referencia del SDK de PHP
http://developers.facebook.com/docs/reference/php/

Parametros para obtener/crear un URL de Login para aplicaciones
http://developers.facebook.com/docs/reference/php/facebook-getLoginUrl/

Facebook Graph API
http://developers.facebook.com/docs/reference/api/
Editado
2
Puntos
4602
Visitas
5
Resp
Por pablo hace 31 meses
Experto

Respuesta #1

Pablo el post de Alber (yo mismo) lleva publicado mas de 1 mes loco! pero bueno el tuyo es diferente, no esta de mas!!

Así tenemos mas variedad, salu2
1
Puntos
Por alber hace 30 meses
Administrador

Respuesta #2

buen aporte, ya tenemos 2 explicaciones de como hacerlo junto con este http://datoweb.com/post/2454/login-con-facebook-en-php-sdk-v323
0
Puntos
Por alber hace 31 meses
Administrador

Respuesta #3

Muy interesante! La unica duda que me surge ya que nunca lo use...

cuando te registras en la web con fb te guarda el registro en tu base de datos? O funciona todo con fb?
0
Puntos
Por zapikero hace 31 meses
Avanzado Sitio web

Respuesta #4

Vale, no dije nada... ya lo vi en el otro post :D
0
Puntos
Por zapikero hace 31 meses
Avanzado Sitio web

Respuesta #5

jajaja alber ha publicado un post como poder inciar sesion en facebook a pero se registra los datos en un x tabla
0
Puntos
Por pablo hace 30 meses
Experto

Relaccionados

Para comentar Inicia sesión o Registrate