Crear login facebook con 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
Índice

    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.

    Relacionado  PHP isset() Comprobar variable si está definida

    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('http://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.

    Relacionado  Función unset Php: Concepto con ejemplos
    Relacionado  Condicional If Else Php: Concepto con ejemplos

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

    Entradas Relacionadas

      11 Comentarios

    1. Marco dice:

      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. Nestor Tapia dice:

        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. Agustin Fiori dice:

      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. Patolin dice:

        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. santiago dice:

      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

    4. Rodolfo dice:

      Gracias...
      Me ha servido de mucho.

    5. Ezequiel dice:

      Muy util

    6. BaulPHP dice:

      Saludos fabian,

      Tienes que descargar el SDK de facebook desde la pagina.
      https://github.com/facebook/facebook-php-sdk-v4/archive/5.0.0.zip
      Para que funcione correctamente.

      Saludos!

      1. santiago dice:

        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. Nestor Tapia dice:

          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.

    7. Fabian dice:

      no funciona login.php
      da error en la linea 7
      require_once __DIR__ . '/facebook/src/Facebook/autoload.php

    Deja una respuesta

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

    Subir