En este tutorial aprenderemos a hacer una sencilla aplicación en PHP que consistirá en que el visitante se autentifique con Facebook y reciba un saludo con su nombre obtenido de su perfil mediante la API de Facebook.
Haremos un saludo usando el Facebook API, primero descargamos el SDK (¿Qué es SDK?):
Antes que nada necesitamos obtener una API Key de Facebook; nos dirigimos a la pagina de developers facebook, creamos una nueva aplicación y copiamos los códigos que allí nos brindan.
Una ves creada la aplicación, te darán tu API Key y tu Código secreto, estos datos los pondremos en nuestro archivo base, creamos un .php dentro de la carpeta del SDK y ponemos:
<?php
require 'src/facebook.php';
$facebook = new Facebook(array(
'appId' => '117743971608120', //App ID/API Key
'secret' => '943716006e74d9b9283d4d5d8ab93204', //Código secreto de la aplicación
));
Obtiene las variables de sesión si el usuario esta conectado.
$session = $facebook->getUser();
Busca si el usuario esta conectado, si es así guarda los datos de facebook en la variable $me.
$me = null; //declaramos $me
if ($session) {
try {
$me = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
}
}
Si el usuario esta logeado en facebook mostrara un saludo seguido de un enlace para que el usuario se pueda desconectar($facebook->getLogoutUrl()).
if ($me){ // si existe $me mostramos un saludo
echo 'Bienvenido '.$me['name']; //con $me['name'] obtenemos el nombre del usuario
?>
<a href="<?php echo $facebook->getLogoutUrl(); ?>">
<img src="#">
</a>
Caso contrario mostramos el boton autenficacion, usando la variable $facebook->getLoginUrl() obtenemos el URL para conectarse facebook.
<?php }else{ ?>
<a href="<?php echo $facebook->getLoginUrl(); ?>">
<img src="#" alt="">
</a>
<?php } ?>
emmanuel dice
bro abra un problema en el ejemplo por que al redireccionar a facebook me da este error
Ocurrió un error con APP. Por favor inténtalo de nuevo más tarde.
Carlos dice
Tienes mal configurada tu app en especifico las url de tu dominio con eso lo resuelves
Carlos dice
desde el panel de tus apps en fb claro esta 🙂
Susan dice
Como se solicita el permiso para la aplicación?, solo si hay permisos se puede obtener el nombre?. Puedes compartir el codigo completo porfavor para descargar?, porque vi que este ejemplo primero solicita permisos para usar la aplicación. En mi caso no lo hace y no muestra el nombre en blanco. Gracias!
pablo dice
estimado, hice lo que sale ahi pero me arroja este error
Fatal error: Uncaught exception ‘Exception’ with message ‘Facebook needs the CURL PHP extension.’ in C:\xampp\htdocs\prueba\src\base_facebook.php:19 Stack trace: #0 C:\xampp\htdocs\prueba\src\facebook.php(18): require_once() #1 C:\xampp\htdocs\prueba\index.php(2): require(‘C:\xampp\htdocs…’) #2 {main} thrown in C:\xampp\htdocs\prueba\src\base_facebook.php on line 19
Giovani Lopez dice
Necesitas activar el modulo de curl.
En php.ini hay una línea «;extension=php_curl.dll», está comentada necesitas quitar el » ; » para activarla, de preferencia reinicia tu computadora.
A veces es necesario copiar las librerías ssleay32.dll y libeay32.dll (que se encuentran en tu carpeta de instalación de php) al directorio System32 esto para el caso de windows.
Luciano dice
Estimados: Estoy logeado en facebook, pero al ingresar al demo me aparece el boton de login. Por que puede suceder? Me sucede lo mismo al ejecutar el codigo desde mi servidor. Gracias
Josue Ochoa dice
Es asi, si tu no le das tu autorizacion mediante el boton, no te saldra nada.
julio899 dice
Hola, Gracias de Antemano Esta Bueno el tutorial, yo lo logre correr aquí coloco el código de como yo lo configure , Nota Importante para configurarlo en facebook en donde dice url de la api No olviden colocar «http://» sin las comillas claro esta ……..
‘340553055900000’, //App ID/API Key
‘secret’ => ’93e9c94f8fa000004013dbcaa3801dbb’, //Código secreto de la aplicación
));
$session=$facebook->getUser();
$me=null;
if($session){
try{
$me=$facebook->api(‘/me’);
}catch(FacebookApiException $e){
error_log($e);
$session=null;
}
}
if($me){
echo «$session -Bienvenido «.$me[‘name’];
echo ‘getLogoutUrl().'»>‘;
}else{
echo ‘getLoginUrl().'»>‘;
}//fin del else
if ($me) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl();
}
?>
Giovani Lopez dice
A qué te refieres con «url de la api»?:
-Dominio de la aplicación:
-Hosting URL:
-URL del sitio:
-Canvas URL:
-URL segura de la página principal de la aplicación:
-URL web móvil:
Gracias
Orlando dice
Yo tb pude configurar y lograr hacer coneccion pero no me desconecta 🙁 aunq creo q es mi internet q esta lento pero de todas formas si saben el problema me dan una manito 😀 gracias y muy buen post y la web tb 😀
Orlando dice
segui probando este codigo y probe en unas hojas con contenido pero me sale este error ya tb Open
Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at /home/vivept/public_html/index.php:4) in /home/vivept/public_html/fb-sdk/src/facebook.php on line 37
si me pueden ayudar y aun sigue sin desconectarse porfavor help help
julio899 dice
headers already sent (output started at /home/vivept/public_html/index.php:4) in /home/vivept/public_html/fb-sdk/src/facebook.php on line 37
======================================================================
Hola por lo que veo Revisa en tu código de PHP en el archivo (facebook.php on line 37)
en la linea anteriores a la 37 o la misma 37. esto nos quiere decir que intentas imprimir información de las cabeceras cuando la pagina ya esta mostrada. esto no se puede.
—————————————————————————————
te recomiendo que revises la parte de tu código donde esta la falla revisa si no intentas imprimir o mostrar información ó Redireccionar antes de
* por que la falla lo que intenta decir es que intentas hacer algo o mostrar algo que se tiene que hacer mucho antes que mostrar cualquier cosa incluso cualquier etiqueta html.
*intenta colocar tu código o hacer todos los procesos antes de mostrar algo por el navegador.
vale?
espero que te aya servido.
Suerte!!!.
Giovani Lopez dice
Si utilizaste ese código para una página que tiene html.
Debes colocar:
Al inicio de tu archivo, es decir antes de iniciar html.
Giovani Lopez dice
Si utilizaste ese código para una página que tiene html.
Debes colocar:
session_start()
Al inicio de tu archivo, es decir antes de iniciar html.
Vicente dice
A mi me ocurre algo extraño. Me sale el botón para loguearme con FB, lo pulso y me vuelve a salir lo mismo (en la url aparece una variable state con un valor larguísimo.
Puedes verlo aquí el funcionamiento: http://construcciondepiscinas.es/login.php
¿ A qué puede ser debido?
Vicente dice
Perdón por responderme a mi mismo, pero ya funciona se me había olvidado esta línea:
$session = $facebook->getUser();
Ya me vale (la de horas que he perdido por eso).
Gracias de todos modos.
Giovani Lopez dice
Hola Vicente.
No puedo conectarme y creo que es el tema de la aplicación de facebook que tal vez está mal configurada.
Necesito ayuda para poder implementar facebook connect y configuré la app con ayuda de un videotutorial.
Me ayudarias mucho si me dijeras como tienes configurada tu aplicación de facebook.
Mi correo es darhius929@hotmail.com
Vicente dice
Pues lo cierto es que yo también pensaba que me fallaba por un tema de configuración de la aplicación de FB, pero era que se olvidó un línea. Repasa bien el código, en la configuracion de facebook, sólo tienes que poner la url del sitio, el dominio del sitio, y marcar que tu aplicación se integra con facebook como Sitio Web. Y ya.
Giovani Lopez dice
Al parecer es un error de configuración en la url en la app de fb.
Así es como tengo el código en mi web.
http://cascareando.mx/fb/
Las url en la app de fb las tengo así:
-Dominio de la aplicación: smooth-rain-3721.herokuapp.com
-URL del sitio: https://smooth-rain-3721.herokuapp.com/
-Canvas URL: http://smooth-rain-3721.herokuapp.com/
-URL segura de la página principal de la aplicación: https://smooth-rain-3721.herokuapp.com/
-URL web móvil: https://smooth-rain-3721.herokuapp.com/
En qué estoy mal?
Giovani Lopez dice
Tengo el siguiente mensaje de error:
«Ha ocurrido un error, por favor intente de nuevo más tarde.»
Cómo puedo solucionarlo?
jose dice
mas tuts de la api del facebook por favor
Franco D. Ocaranza dice
Por qué puede ser que mi aplicación no logra responder positivamente a la línea: «if ($session) «?? Me refiero a que no cumple con esa condición, y por lo tanto no puedo leer los datos del usuario…
Yilver Uran dice
me sale el siguiente error, no se que debo hacer…
Error
App Not Setup: The developers of this app have not set up this app properly for Facebook Login.