PHP Iniciar Sesión con cuenta de Facebook


Última Actualización: 31/08/2022 19:03 Nro de Vistas: 3791

PHP Iniciar Sesión con cuenta de Facebook

Como ya vimos anteriormente como implementar el PHP SDK de Facebook una de las cosas que queremos hacer es poder logearse en nuestra web con una cuenta de facebook. Esa famosa opcion de miles de paginas que nos dicen logeate con facebook, o iniciar sesion con facebook. En este artículo aprenderemos a Iniciar Sesion en nuestra web con una cuenta de facebook.

Primero el Código Oviamente funcionando:

Crea un archivo llamado. fb_login.php

<?php
session_start();
//Es obligatorio inicializar las sesiones.

require_once('lib/facebook-sdk-v5/autoload.php');
//Agregamos el archivo autoload recuerda la ruta donde lo descomprimiste
 
//TODO LO QUE DIGA {CHANGEME} CAMBIA POR TUS DATOS
define('conf_appid','{CHANGEME}');
define('conf_appsecret','{CHANGEME}');
define('conf_perm_user','email,user_birthday');
//ahora Agregamos permisos. Puedes pedir muchos mas permisos que estos dos.

//Ingresamos la ruta absoluta y publica de este archivo ejm: http://www.tudiminio.com/fb_login.php
$thislink = 'http://{CHANGEME}/fb_login.php';
 
//Inicializamos la clase.
$fb = new Facebook\Facebook([
  'app_id' => conf_appid, 
  'app_secret' => conf_appsecret,
  'default_access_token' => conf_appid.'|'.conf_appsecret, 
  'default_graph_version' => 'v2.8'  //Ultima Version del Graph 
]);
 
$facebook = $fb->getRedirectLoginHelper();
//Comprobamos que la sesión no esté iniciado
if(!isset($_SESSION['fb_token'])){
	//Comprobamos retorno GET de Facebook
	if (isset($_GET['code']) && isset($_GET['state'])) {
		
		//Solicitamos el acces_token
		$accessToken = $facebook->getAccessToken();
		if (isset($accessToken)) {
			
			//creamos una sesion con el access_token
		  	$_SESSION['fb_token'] = (string) $accessToken;
			
			//Solicitamos datos del Usuario
			$getuserdata = $fb->get('/me', $_SESSION['fb_token']);
 	  		$usuario = $getuserdata->getGraphUser();
			
			//Guardamos el ID del usuario en una Sesión
			$_SESSION['user_id'] = $usuario['id'];
		  	
			//Redireccionamos a esta misma página para eliminar los $_GET sino provocará error
			header('Location: '.$thislink );
			exit('Se que esto no lo verás');
		}
	}else{
		$loginUrl = $facebook->getLoginUrl($thislink, explode(',',conf_perm_user));
		echo '<a href="'.$loginUrl.'">Login</a>';
	}	

}else{
	//llegaste aqui porque por fin iniciaste la sesion.
	echo 'Sesion Iniciada: <br> Tu ID de usuario es: '.$_SESSION['user_id'];
}

?>

Una vez Iniciada la Sesión Guardamos los datos de $_SESSION['user_id'] y $_SESSION['fb_token']

Cada solicitud GET deberá ir acompañado solamente por el $_SESSION['fb_token'].

Existen varios tipos de access_token que sirve para publicar en tu muro, en el muro de otra persona autorizada, fanpage, etc.

Nota: En este tutorial evitamos el Manejo de Excepciones para que no te confundan y puedas entenderlo rápidamente. Es bueno capturar los errores para saber quien causa el error. Sin embargo creemos que eso no le interesa al usuario. asi que el manejo de errores lo hacemos solo para el desarrollador.