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
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.
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.
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.
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
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?
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
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
Gracias…
Me ha servido de mucho.
Muy util
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!
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
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.
no funciona login.php
da error en la linea 7
require_once __DIR__ . ‘/facebook/src/Facebook/autoload.php