Lenguaje PHP

Crear login facebook con PHP

Crear login facebook con PHP. La globalización ya está presente hoy en día y hablar en registros de usuarios es recomendable darle todas las ventajas al visitante de nuestra web, darle muchas alternativas para que tengan una buena experiencia al navegar por nuestra página web.

Para hacernos la vida más fácil Facebook creó las APIs que son cada vez más utilizadas en diversas modalidades que abarcan desde login, comentarios, botones entre otras. Es por tal motivo que en este pequeño artículo aprenderemos a integrar un login de usuarios con Facebook en PHP utilizando el SDK oficial del proveedor.

Crear login facebook con PHP
Crear login facebook con PHP

Crear login facebook con PHP

Ahora, antes de comenzar a programar en PHP es necesario tener creada una aplicación en Facebook, esto lo podemos hacer desde el sitio.

https://developers.facebook.com.

Una vez que tenemos la aplicación web creada se proporcionará un APP ID, API Versión y un App Secret que utilizaremos luego para configurar nuestra aplicación.

La pregunta:

¿Cómo hacer un login con Facebook en PHP y MySQL?

Primero debemos descargar el SDK de Facebook para PHP desde la página que nos brindara los códigos.

https://github.com/facebook/facebook-php-sdk-v4/archive/5.0.0.zip

Primeramente descargar el script y descomprimirlo para ubicarlo en una carpeta en nuestro servidor web. Ahora si podemos empezar a programar nuestro login con Facebook de manera eficiente porque contamos con todas las herramientas para lograrlo.

Necesitamos de dos archivos con nombres login.php y fb-callback.php con sus respectivos script para que funcionen. Sin embargo debemos reemplazar algunos requisitos que pide dicha aplicación como son  (APP ID, API Versión y App Secret). Además de declarar las rutas correctas de nuestras carpetas en donde hemos colocado nuestros ficheros.

Paso #01 Creamos un archivo login.php e incluimos el siguiente código:

<?php
 
/* Muestra la sesión*/
session_start();
 
/* Debemos modificar segun el directorio de instalación*/
require_once __DIR__ . '/facebook/src/Facebook/autoload.php';
 
$fb = new Facebook\Facebook([
  'app_id' => 'Su App ID',
  'app_secret' => 'Su App Secret',
  'default_graph_version' => 'v2.4',
]);
  
$helper = $fb->getRedirectLoginHelper();
  
$permissions = ['email']; // Generar permisos opcionales
$loginUrl = $helper->getLoginUrl('https://localhost/PHP/ejemplos/facebook/fb-callback.php', $permissions);
  
/* Aquí el enlace a la página de login Facebook*/
echo '<a href="'. htmlspecialchars($loginUrl) . '">Iniciar sesión con Facebook!</a>';
 
?>

Paso #02 Creamos un fichero con el nombre fb-callback.php:

A continuación mostramos el contenido de dicho fichero a implementar en nuestro login Facebook.

<?php
 
//Cargar la sesión
session_start();
 
// Cambiar de acuerdo donde hemos instalado el script
require_once __DIR__ . '/facebook/src/Facebook/autoload.php';
 
$fb = new Facebook\Facebook([
  'app_id' => 'Su App ID',
  'app_secret' => 'Su App Secret',
  'default_graph_version' => 'v2.4',
]);
   
$helper = $fb->getRedirectLoginHelper(); 
   
try { 
  $accessToken = $helper->getAccessToken(); 
} catch(Facebook\Exceptions\FacebookResponseException $e) { 
  // Cuando Graph devuelve un error
  echo 'Graph returned an error: ' . $e->getMessage(); 
  exit; 
} catch(Facebook\Exceptions\FacebookSDKException $e) { 
  // Cuando la validación falla 
  echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
  exit; 
} 
 
if (! isset($accessToken)) { 
  if ($helper->getError()) { 
    header('HTTP/1.0 401 Unauthorized'); 
    echo "Error: " . $helper->getError() . "\n";
    echo "Error Code: " . $helper->getErrorCode() . "\n";
    echo "Error Reason: " . $helper->getErrorReason() . "\n";
    echo "Error Description: " . $helper->getErrorDescription() . "\n";
  } else { 
    header('HTTP/1.0 400 Bad Request'); 
    echo 'Bad request'; 
  } 
  exit; 
} 
 
// Login directo 
echo '<h3>Acceso Token</h3>'; 
var_dump($accessToken->getValue()); 
   
// Controlador de cliente de OAuth 2.0, para gestionar los accesos
$oAuth2Client = $fb->getOAuth2Client(); 
   
$tokenMetadata = $oAuth2Client->debugToken($accessToken); 
echo '<h3>Metadata</h3>'; 
var_dump($tokenMetadata); 
   
$tokenMetadata->validateExpiration();  
    
if (! $accessToken->isLongLived()) { 
  // Cambiando uno de corta duración a una de larga duración
  try { 
    $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken); 
  } catch (Facebook\Exceptions\FacebookSDKException $e) { 
    echo "<p>Error getting long-lived access token: " . $helper->getMessage() . "</p>"; 
    exit; 
  }
  echo '<h3>Long-lived</h3>'; 
  var_dump($accessToken->getValue()); 
}
 
$_SESSION['fb_access_token'] = (string) $accessToken; 
   
?>

Conclusión

Una vez que tenemos todo implementado es la hora de probar este login con Facebook, para probar el funcionamiento correcto del script debemos ingresar con nuestro navegador preferido (Mozilla, Opera, etc.) a la página de login.php.

Nos mostrara un botón HTML y ahí debemos darle clic para iniciar sesión con Facebook.

Bueno solo agradecerles por visitarme y ante cualquier duda dejen un comentario, estaré gustoso de responderles.

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

11 comentarios

  1. Hola, sabe como se puede solucionar este problema:

    No se puede cargar la URL: El dominio de esta URL no está incluido en los dominios de la aplicación. Para poder cargar esta URL, añade todos los dominios y subdominios de tu aplicación al campo de dominios de la aplicación en la configuración de tu aplicación.

    que no permite autenticarte.

    1. Hola Marco

      Primero descargar la librería y luego se tiene que configurar esta sección con las credenciales de su app de Facebook.
      Debes de crear en esta URL
      https://developers.facebook.com/?locale=es_ES

      Luego con las credenciales de tu app facebook debes de configurar las siguientes lineas.

      // Cambiar de acuerdo donde hemos instalado el script
      $fb = new Facebook\Facebook([
        'app_id' => 'Su App ID',
        'app_secret' => 'Su App Secret',
        'default_graph_version' => 'v2.4',
      ]);
        
      $helper = $fb->getRedirectLoginHelper();
        
      $permissions = ['email']; // Generar permisos opcionales
      $loginUrl = $helper->getLoginUrl('https://localhost/PHP/ejemplos/facebook/fb-callback.php', $permissions);
        
      

      Tambien te dejo este articulo que explico sobre el tema de login con facebook
      https://www.baulphp.com/iniciar-sesion-con-facebook-usando-php-descargar/

      Saludos

  2. Excelente ejemplo!! Muchas gracias.
    Me estoy rascando la cabeza para saber cómo obtener el email del usuario estando en fb-callback.php
    Podrías orientarme por favor?

    1. Es simple:
      ya que se tiene el accessToken, ahora debemos solicitar los scope y se puede hacer de la siguiente manera:
      $loggedUser = $fb->get(‘/me?fields=id,name,email,first_name,last_name,picture’, $accessToken);
      $gu = $loggedUser->getGraphUser();
      $name = $gu->getName();
      $foto = $gu->getPicture();
      $id = $gu->getId();
      $email = $gu->getEmail();
      Espero te sirva

  3. Ya arregle lo del otro problema, no habia leido bien el error y solo era que habia puesto mal la direccion. Mi otro problema es que cuando le doy click en «iniciar sesion en facebook» me manda a un direccion no localizada y pienso que el problema esta en este codigo: $permissions = [‘email’]; // Generar permisos opcionales
    $loginUrl = $helper->getLoginUrl(‘http://localhost/PHP/ejemplos/facebook/fb-callback.php’, $permissions); quizas donde dicen ejemplo, pero no se que poner. Tu ayuda me ayuda mucho ya que es un proyecto. Muchas gracias

    1. Amigo, mi pregunta es: Donde pongo esa carpeta que descomprimo, porque yo lo descomprimi pero no tengo idea de donde ponerlo ya que estoy trabajando con xampp. Me harias mucha ayuda respondiendome. Gracias

      1. Tienes que colocarlo en la raiz de tu proyecto web y llamarlo con un require o include
        /* Debemos modificar segun el directorio de instalación*/
        require_once __DIR__ . ‘/facebook/src/Facebook/autoload.php’;

        $loginUrl = $helper->getLoginUrl(‘http://localhost/PHP/ejemplos/facebook/fb-callback.php’, $permissions);

        Lo ideal seria probarlo en un servidor de producción, saludos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba