Facebook acaba de actualizar su PHP SDK a la versión 3.0.0. Facebook también ha actualizado no hace mucho su sistema de autorización y autentificación al protocolo OAuth 2.0. Aprovechando tanto el nuevo PHP SDK y el nuevo sistema de autorización vamos a aprovechar este artículo para ir un poco más allá de los anteriores artículos del blog, donde vimos cómo crear una pestaña con iFrames y luego cómo incluir plugins sociales (os recomiendo la lectura de ambos antes de empezar aquí).
En este artículo vamos a ver:
- Cómo obtener el nuevo PHP SDK 3.0.0.
- Cómo solicitar autorización al usuario de nuestra aplicación para obtener sus datos con OAuth 2.0
- Como solicitar permisos extra (más datos de los que se dan por defecto).
- Como mostrar dichos datos.
Si os habéis fijado, en muchas promociones, concursos, juegos y aplicaciones sale una pantalla en la que se os pide dar autorización para que la aplicación obtenga una serie de datos vuestros. La pantalla es algo así:

Eso sucede porque los datos que se obtienen del usuario sin autorización son en muchos casos insuficientes (como vimos en los dos artículos anteriores) y necesitamos la autorización del usuario para acceder a más y así tener datos completos de los participantes en concursos, promociones, etc…
Pero empecemos desde el principio, creando nuestra nueva aplicación.
Creando una nueva aplicación
Para no hacer muy largo el artículo no voy a detallar los pasos necesarios para crear una aplicación, ya que los tenéis en los dos artículos a los que he hecho referencia antes. Sí decir que Facebook ha indicado que a partir del 1 de Octubre de 2011 todas las aplicaciones necesitarán tener certificado SSL, por lo que si tienes aplicaciones de Facebook en tu servidor y quieres que sigan funcionando a partir de dicha fecha ve contratando el certificado….
Descargando el PHP SDK v3.0.0.
Necesitaremos tener el nuevo PHP SDK de Facebook . Lo podéis descargar aquí. De todo lo que os descargáis nos vamos a quedar con tres archivos que están dentro del directorio /src: facebook.php, base_facebook.php y fb_ca_chain_bundle.crt.
Crea una nueva carpeta para el nuevo proyecto que vamos crear. Crea otra carpeta dentro de esta que se llame “includes” y copia dentro los tres archivos.
Creando el archivo index.php
Ahora creamos un archivo que se llame index.php que esté en el directorio raiz de la carpeta que has creado para el nuevo proyecto. En este archivo empezamos por incluir el PHP SDK y por crear un nuevo objeto $facebook.
|
1 2 3 4 5 6 7 8 9 10 |
<?php // Incluimos el PHP SDK v.3.0.0 de Facebook require 'includes/facebook.php'; // Creamos un nuevo objeto con los datos de nuestra aplicación (cambia los datos por los de tu App ID y tu App Secret). $facebook = new Facebook(array( 'appId' => '123217624427528', 'secret' => 'adce0286171216961005e074d5de319d', )); |
A continuación vamos a incluir las lineas necesarias para el proceso de autentificación de Facebook, basado en OAuth 2.0. Empezamos comprobando que el usuario que ha entrado en nuestra aplicación se ha identificado en Facebook y está autentificado:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// Obtener el ID del Usuario $user = $facebook->getUser(); // Podemos obtener o no este dato dependiendo de si el usuario se ha identificado en Facebook o no // if ($user) { try { // Procedemos a saber si tenemos a un usuario que se ha identificado en Facebook que está autentificado. // Si hay algún error se guarda en un archivo de texto (error_log) $user_profile = $facebook->api('/me'); } catch (FacebookApiException $e) { error_log($e); $user = null; } } |
En el proceso de autentificación obtendremos un “access token”, un identificador con el que en cada petición que hagamos demostramos tener acceso a la información del usuario. En la obtención del mismo se basa el sistema de identificación OAuth 2.0. Podéis ver cómo funciona el proceso de autentificación en esta página de Facebook. Como veis, si hay algún error se genera un archivo de texto con el nombre “error_log”. Si algo falla abrid este archivo donde os vendrá una descripción del error.
A continuación pedimos al usuario que aún no nos haya dado la autorización (no se haya autentificado en nuestra aplicación) los permisos que necesitamos. Por defecto los permisos son los básicos, al no incluir ningún parámetro en getLoginUrl();
|
1 2 3 4 5 6 7 |
// La url de Login o Logout dependerá del estado actual del usuario, si está autentificado o no en nuestra aplicación // Aquí obtenemos los permisos del usuario. Por defecto obtenemos una serie de permisos básicos if ($user) { $logoutUrl = $facebook->getLogoutUrl(); } else { $loginUrl = $facebook->getLoginUrl(); } |
La lista de permisos que podéis obtener la tenéis aquí. Los permisos adicionales a solicitar al usuario se incluyen dentro de un array entre los paréntesis de getLoginUrl();. Aquí hay una novedad, y es que para obtener nuevos permisos se utiliza ahora el parámetro “scope” en vez del antiguo “req_perms”. Supongamos que queremos más permisos que los que obtenemos por defecto, por ejemplo:
|
1 2 3 4 5 6 7 8 |
if ($user) { $logoutUrl = $facebook->getLogoutUrl(); } else { $loginUrl = $facebook->getLoginUrl( array( 'scope' => 'email,publish_stream,user_birthday,user_location,user_work_history,user_about_me,user_hometown' )); } |
Aquí hemos obtenido permiso para obtener el email y poder enviar emails al usuario, permiso para publicar en su muro, el cumpleaños, la ubicación, la historia laboral que tenga puesta el usuario en Facebook, su información y localidad.
A continuación, para el caso de que no tengamos a un usuario válido lo redirigimos a la página de autentificación:
|
1 2 3 4 |
if (!$user) { echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>"; exit; } |
Vamos a añadir unas últimas líneas que pondremos al principio de todo. Tras autentificarse correctamente en nuestra aplicación, Facebook manda al usuario a la URL donde está ubicada nuestra aplicación, junto a un parámetro mediante un GET al que llama code=XXXX . Si queremos que se redirija a la URL de nuestra aplicación de Facebook comprobamos si está definido o no el parámetro y redirigimos. Podéis ver esto explicado en este artículo: Graph API & IFrame Base Facebook Application Development PHP SDK 3.0
En el caso de que nuestra aplicación tenga varias páginas podemos usar este condicional para elegir dónde debemos enviar al usuario una vez esté autentificado.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
// Sustituid esto por la que sea la Canvas Page de vuestra aplicación $appBaseUrl = "http://apps.facebook.com/demo-nueva-version/"; /* * Facebook dirige al usuario a la Canvas URL tras autentificarlo * Comprobamos si nos ha devuelto un $_GET['code'] * para redirigirlo en su lugar a la Canvas Page */ if (isset($_GET['code'])){ header("Location: " . $appBaseUrl); exit; } |
Aquí hemos terminado con todo el código php. Ahora, a continuación, escribimos el código HTML de la aplicación:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<!doctype html> <html xmlns:fb="http://www.facebook.com/2008/fbml"> <head> <title>php-sdk 3.0.0</title> <style typ="text/css"> html, body { width: 520px;} </style> </head> <body> <h1>php-sdk</h1> <h3>PHP Session</h3> <?php foreach($_SESSION as $key=>$value){ echo '<strong>' . $key . '</strong> => ' . $value . '<br />'; } ?> <h3>Tu</h3> <img src="https://graph.facebook.com/<?php echo $user; ?>/picture"> <h3>Tus datos (/me)</h3> <?php foreach($user_profile as $key=>$value){ echo '<strong>' . $key . '</strong> => ' . $value . '<br />'; } ?> </body> </html> |
Vamos a ver las líneas más importantes:
- En la líneas 14 a 17 mostramos el contenido de la sesión, a través del array $_SESSION, donde está el access token del que hablábamos más arriba.
- En la línea 19 mostramos la imagen del perfil del usuario
- En la líneas 22 a 25 mostramos todos los datos que están en el array $user_profile, que nos ha dado el usuario al aceptar la autorización. Ahora puedes grabar estos datos en tu base de datos o utilizarlos en función de lo que quieras que haga la aplicación. Recuerda siempre comprobar las normas que Facebook impone para poder hacer promociones en su plataforma.
Vemos ahora todo el código junto:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
<?php $appBaseUrl = "http://apps.facebook.com/demo-nueva-version/"; /* * Facebook dirige al usuario a la baseUrl tras autentificarlo * Comprobamos si nos ha devuelto un $_GET['code'] * para redirigirlo al appBaseUrl */ if (isset($_GET['code'])){ header("Location: " . $appBaseUrl); exit; } // Incluimos el PHP SDK v.3.0.0 de Facebook require 'includes/facebook.php'; // Creamos un nuevo objeto Facebook con los datos de nuestra aplicación (cambia los datos por los de tu App ID y tu App Secret). $facebook = new Facebook(array( 'appId' => '123217624427528', 'secret' => 'adce0286171216961005e074d5de319d', )); // Obtener el ID del Usuario $user = $facebook->getUser(); // Podemos obtener o no este dato dependiendo de si el usuario se ha identificado en Facebook o no if ($user) { try { // Procedemos a saber si tenemos a un usuario que se ha identificado en Facebook que está autentificado. // Si hay algún error se guarda en un archivo de texto (error_log) $user_profile = $facebook->api('/me'); } catch (FacebookApiException $e) { error_log($e); $user = null; } } // la url de Login o Logout dependerá del estado actual del usuario, si está autentificado o no en nuestra aplicación // Aquí obtenemos los permisos del usuario. Por defecto obtenemos una serie de permisos básicos if ($user) { $logoutUrl = $facebook->getLogoutUrl(); } else { $loginUrl = $facebook->getLoginUrl( array( 'scope' => 'email,publish_stream,user_birthday,user_location,user_work_history,user_about_me,user_hometown' )); } if (!$user) { echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>"; exit; } ?> <!doctype html> <html xmlns:fb="http://www.facebook.com/2008/fbml"> <head> <title>php-sdk 3.0.0</title> <style typ="text/css"> html, body { width: 520px;} </style> </head> <body> <h1>php-sdk</h1> <h3>PHP Session</h3> <?php foreach($_SESSION as $key=>$value){ echo '<strong>' . $key . '</strong> => ' . $value . '<br />'; } ?> <h3>Tu</h3> <img src="https://graph.facebook.com/<?php echo $user; ?>/picture"> <h3>Tus datos (/me)</h3> <?php foreach($user_profile as $key=>$value){ echo '<strong>' . $key . '</strong> => ' . $value . '<br />'; } ?> </body> </html> |
Eso es todo, espero que os sea de utilidad. ¡Cualquier ampliación o mejora del contenido del artículo es siempre bienvenido!

buenísimo tutorial muy pero muy completo muy buen recurso que as soltado a la web en español
desde Guatemala
no lo estoy probando ni mucho menos pero me viene una interrogante como puedo mandar a llamar la foto del usuario de facebook que me visito eso lo he visto en unas aplicaciones y me parece bastante útil como se aria eso ???
Gracias Jorge,
Si te fijas en el código sale cómo obtener la foto del usuario que se ha auntentificado.
si pues seria esto
verda mmm interesante muy interesante Juan Gracias por el recurso
jajaja otra pregunta si estoy haciendo una aplicación en flash como puedo obtener estos datos de la misma forma ?? puedo poner
Hola Jorge,
Lo siento, no controlo nada de Flash ((
Excelente articulo, te agradeceré mucho si me ayudas con una consulta, como puedo usar este tutorial para autentificación de usuarios en un blog que corre con wordpress mediante mi pagina o aplicación de facebook?
Saludos.
Hola Mauro,
Si lo que necesitas es autentificar a usuarios usando su usuario y contraseña de Facebook tienes varios plugins que te permiten hacerlo de forma sencilla, como este: http://wordpress.org/extend/plugins/wp-facebookconnect/
Hola, gracias por el dato, pero ese plugin no se ha actualizado desde el 2010 y quiero usar código propio sin ningún tipo de plugin en mi blog.
Saludos.
Ah, ok. Estoy preparando un artículo para el uso de Facebook Connect y el nuevo PHP SDK, aunque quizás haya que esperar a que Facebook actualice su Javascript SDK, que dicen que lo harán en cuatro semanas. Mientras tanto quizás te pueda servir este artículo: http://thinkdiff.net/facebook-connect/php-sdk-3-0-graph-api-base-facebook-connect-tutorial
Gracias nuevamente, esperare con muchas ansias tu articulo, hasta entonces leeré la nota que me indicas.
Saludos.
Buneas noche
en primer lugar agradecerle y felicitarle por esto tutoriales, mi pregunta viene referida a dos cuestiones
1 en developers en Facebook Integración hay que elegir entre IFrame o FBML entiendo que en Ifrme
2 cuando finalizo todo el proceso accedo a la aplicación me sale el cuadro de permisos, acepto y en ese momento Facebook entra en un bucle cambiando las direcciones del navegador pero no muestra la infomación
si recargo la página si que me muestra la información
un saludo
Gracias Ramón,
Si, es iFrames. De hecho pensaba que ya no salía la opción FBML. Si aún está supongo que la quitarán en breve.
¿A qué te refieres con que cambia las direcciones del navegador? ¿Se te ha creado el archivo error_log para ver qué puede estar pasando?
Buenas tardes, perdón por el retraso pero me había cogido un días de vacaciones, volviendo a la aplicación ¿ podría ser que tuviera que ver con no tener https? la url que se muestra en el servidor es segura y mi aplicación tiene una url normal
Lo siento pero no me funciona, es como si se recargara la pagina y nunca termina de cargarse. justo después de pedirme los permisos.
el dejo el enlace a la aplicación http://apps.facebook.com/conpermisosweblama/
Hola Ramón,
¿Se te ha creado el archivo error_log?¿Pone algo en el mismo?
no me ha creado ningún archivo
Hola Ramon, no se si ya resolviste tu pregunta, yo justameente he estado leyendo por todos lados, el cambio de navegacion segura… con https a la que se mudo facebook hace un tiempo, y bueno yo lo que hice fue comprar un certificado ssl para mi sitio web y ya me andan las aplicaciones…
ahora quiero, capturar la informacion del usuario estoy intentando hacer lo que en este tutorial aparece, para la parque que es de 760 px, no de 520, ya la de 520, cuando le das me gusta la pone abajo del avatar normal, pero esta que quiero hacer es una que te abre a 760 px, y quiero auntenticar a usuario… mediante este metodo que muestra Juan en este tutorial.
Pero bien, te digo que yo lo resolvi de esa manera, pues segun vi, desde el 11 de oct. de 2011 las aplicaciones tendran que estar soportadas por un certificado… SSL, no se si me equivoco pero, es lo que he leido y pues hable con mi hosting y asi lo resolvi.
Saludos.
Pd. alguien me da una mano extra para hacer este procedimiento de autenticacion… ? Gracias
Muchas gracias por compartir su conocimiento, me ha ayudado mucho a comprender esto, ya que me estoy iniciando en aplicaciones para facebook, ahora trataré de hacer la parte de publicar en el muro de la persona que usa la aplicacion, si no lo logro espero y si su tiempo lo permite un tutorial de como hacerlo.
Saludos.-
Gracias Santiago. Echale un vistazo al artículo anterior al que hago referencia en este, sobre las interaciones sociales. Aunque ten en cuenta que Facebook va a actualizar el Javascript SDK en breve. En cuanto esté la nueva versión sacaré el artículo correspondiente.
seguro que le voy a echarle un vistazo, estan muy interesantes, de momento inserte este codigo:
Nose si sea la forma mas elegante pero me ha funcionado, solo que se publica en el muro cada vez que el usuario entra a la aplicacion; pero como esta va a ser usada solo una vez no me preocupa tanto.
Muchas gracias de nuevo por sus tutoriales, y como lo mio es mas diseño que programacion su blog me es muy util para entender como funciona.
Saludos.-
Hola Santiago
Mira eh logrado que esta aplicación funcione en mi face, el problema es el siguiente, ojalá puedas ayudarme, lo que pasa es que necesito un codigo PHP para enlazar esta a mi base de datos, si pudieras compartirlo. Muchas gracias !
Como estas Santiago, coloque el codigo que aportaste pero no me funciona, no se si me puedes ayudar con un par de detalles sobre en donde va y/o recomendaciones… te agradeceria mucho… Gracias
Muy bien explicado, saludos desde Argentina!
Gracias!
Yo no entendi al 100% =( un poco de ayuda adicional se puede?
No logro que al darle click en IR A LA APLICACION, me muestre la autorizacion sin enbargo si pruebo el url si esta sirviendo que hago
Estimado Juan, agradeciendo este interesantisimo bog, la verdad estoy muy agradecido. Por otra parte ya hice todas las recomendaciones aqui expuestas pero al ingresar a mi aplicación me vuelve a salir otra solicitud de permiso “Demo nueva versión”, adem[as quisiera saber a donde se encuentran todos los datos de los usuarios al aceptar el permiso.
Gracias
Hola Juan ojalá pudieras contestar mi pregunta ?
con el ejemplo tal y como aparece aquí, en el log aparece este error “Bad Signed JSON signature!”
alguna idea de como solucionarlo ?
Hola Juan, sigo intentando pero no he tenido suerte, sobre todo como hago para que la base de datos de los usuarios se redirija a una base de datos propia. Gracias
Hey esta es buena, tambien estoy interesado en saber como lo almaceno en mysql… un poco de ayuda? como te ha ido ya lo lograste Abel?
Saludos
Yo he hecho una aplicacion con todo esto con la base de datos, si aun estan interesados le spuedo pasar el codigo
Hola Luis, necesito precisamente esa aplicación que conecta a la base de datos, por favor si me la puedes conseguir te lo agradeceré mucho.
Gracias…
He aplicado todos tus códigos, pero no entiendo por que toda mi información como usuario de facebook se me devuelve a mi propia página, no se supone que debería de llevarme a alguna imagen que tengo guardad y toda la info deba ir a una base de datos. Quisiera solo saber como es que esto funciona, por favor. Gracias.
Hola Abel,
Usando PHP puedes recoger esos datos y hacer con ellos lo que necesites (enviartelos por email, guardarlos en una base de datos…) pero eso requiere que hagas la programación adicional necesaria. En el artículo se muestra cómo conseguir esos datos.
Juan
Gracias por tu respuesta, pero cuantos archivos más en PHP necesito, para conectar estos datos a mi Base de Datos. La verdad e probado varios códigos php con estos códigos pero ninguno me da resultados óptimos. Ojalá pudieras desarrollar este tema también, aqui!
Muy buena pregunta, estare al pendiente de la respuesta de Juan… oye Abel, ya pudiste entonces lograr que… antes de ir a tu app se autentifique el usuario??
Gracias!!
Saludos
Hola Ernesto, si funciona todo ok… el problema es enlazarlo con mi base de datos, si tuvieras tu el código php apropiado, por favor podrías compartirlo, gracias !
te mande un mail… al mail que esta een el sitio que publicaste en tu perfil… ponte en contacto y hacemos algo..
Juan,
un favor tu crees que nos puedas brindar el código php para dirigir los datos a una base de datos MySSQL y asi poder adatarlo al código de este blog, por favor para que nos sirva de referencia. Gracias.
Muy buenas tardes,
Ante todo gracias por este gran artículo, la información es muy interesante.
Probando el código, tanto con la appId y App secret que utilizas tú en el ejemplo, como con la appId y App secret propios me produce el mismo error:
Ha ocurrido un error con <>. Por favor, inténtalo de nuevo más tarde.
¿A que crees que se puede deber esto?
Un saludo,
Héctor
Gracias Héctor,
No ha salido el error que te da. ¿Se ha generado el archivo error-log?
No, no ha creado el archivo error-log, simplemente me aparece la página de facebook con ese mensaje.
Muy Completo!! EXCELENTE!!! Saludos desde VENEZUELA!!, lo que mas costo fue descubrir el siguiente código:
—————————————————————
// Mostrar Nombre Completo de Usuario
—————————————————————
y debido a todo le tengo una Pregunta:
¿ Usando los Criterios de búsquedas reflejados en “http://developers.facebook.com/docs/reference/api/user/” pueden ser estos ó algunos seleccionados (ej. gender, name, birthday, email,locale) almacenados en una BDD?
Gracias
Hola de nuevo, me gustaría saber si mi error puede ser debido a la configuración de mi servidor o a que me pueda faltar algún componente. Llevo una semana peleando y no consigo nada…
Este es el error que me da:
API Error Code: 191
API Error Description: The specified URL is not owned by the application
Error Message: Invalid redirect_uri: La URL indicada no esta permitida por la configuración de la aplicación.
Y este es el código que he utilizado:
Sale un poco raro el código. Creo que por el texto del error el problema está más bien en la configuración de la aplicación. Asegúrate de que has rellenado bien todos los campos, especialmente donde tienes que poner el dominio del sitio.
Hola Juan,
Gracias por responder tan pronto. Sí, no se porqué el código se ha copiado mal.
En el ejemplo que he puesto, he utilizado la id y el secret de la aplicación que está como ejemplo en esta misma página. ¿Esta aplicación de ejemplo no tiene rellenados todos los campos?
Hola Héctor,
No he revisado el código pero creo que el error viene de cuando has dado de alta la aplicación, del formulario al dar de alta. Revisa si has rellenado todos los campos y si hay algún error, especialmente donde introduces la url del dominio.
Ya he solucionado el problema. Resulta que no estaba activado el access token de la aplicación.
Muchas gracias por toda tu atención y disculpa las molestias.
Un saludo,
Héctor
Me alegro, gracias Héctor.
hola deseo saber como guardar en una base de datos el id y token de los usuarios de mi aplicacion
estes el codigo que me toma lo id
Al copiar el codigo me generaba un problema en cuanto a la linea
Lo solucione colocando al principio del archivo index.php
que permite iniciar la session de usuario. Esto para aquel que se le haya presentado un problema similar.
//////////////////////////////////////
Mi duda es, que la aplicacion me imprime varios datos del usuario, inclusive algunos que ni siquiera han sido tenidos en cuenta en el apuntador ‘scope’ , y veo que acceder a los datos, al array se hace de la siguiente forma:
como puedo acceder a un valor especifico????
por ejemplo pense en usar algo asi como un vector $key[1]; pero no me funciono…
El objetivo es que yo hiciera esto:
$key[2] seria la posicion 2 del vector, y me imprimiria el nombre del usaurio… Eso se puede haceR??
o como puedo acceder a datos puntuales de la aplicacion????
Gracias por su ayuda..
Excelente el tutorial, estaba con “miedo” de pasarme al PHP SDK 3.0, pero como facebook es tan lindo con sus errores, tuve que probarlo, y teniendo esto bien explicado, fueron 15 minutos… La verdad, te felicito. Voy a llevar este material a mi web (obviamente adjuntando la fuente
)
Gracias!
Gracias Diego¡
La verdad, no entiendo.
Por un lado tenemos una sesión:
Para mantener la información e identificar al usuario, según mi teoría, tener mi propia base de datos, etc.
Pero por otro puedo obtener la información directamente desde la aplicación de Facebook, sin necesidad de guardar nada, osea, ¿la sesión para que sirve?
Notese que no me manejo en esto xd
Al intentar crear una aplicación como explicas me da el siguiente error Fatal error: Uncaught OAuthException: Invalid OAuth access token signature. thrown in …/facebook/src/base_facebook.php on line 1033. ¿Alguna idea para solucionar esto?
He conseguido que funcione pero tengo un problema. Una vez que ya has concedido permisos para que vea tu perfil solo hace que recargarse y no muestra nada
UN GRAN EJEMPLO!! MUCHISIMAS GRACIAS!!
Muchas gracias Elena!
Antes que nada, darte las gracias y la enhorabuena por el tuto. Tengo un problemilla y no sé si es algo que me estoy saltando.
La aplicación me funciona perfecta si quien entra es un usuario pero si entro como página de facebook, no me aparece nada.
Supuse que podría ser por la petición de información o algo, pero probé a poner una “aplicación” sólo de html sin autorización ni nada y tampoco me aparece, me sale todo en blanco.
Alguna sugerencia?
Muchas gracias otra vez!
Gracias Paco,
Efectivamente, si se entra como página de empresa aparece en blanco, cosas de Facebook…
Pero no ocurre así con todas las aplicaciones, no? o sí?
P.D: He visto el post de auditoría SEO, es genial!
Gracias de antemano!
Gracias Paco,
Cuando se escribió el artículo pasaba así, no he hecho nada con Facebook desde entonces, por lo que no sé si con las actualizaciones que han hecho en el SDK lo habrán solucionado. Tendría que mirarlo.
Aprovechándome un poco :$. Sabrías decirme si es posible y si es así cómo, saber desde qué página se está accediendo a una aplicación?
Estamos hablando de una aplicación instalada en una página de facebook.
Mil gracias!
Por lo que he visto en algunas de las variables $_SERVER o $_REQUEST debería venir la url de la web page desde la que se accede a la aplicación pero me devuelve la dirección donde se localiza la aplicación en mi servidor. Seguiré investigando.
Muchas gracias!
Me respondo yo solo más o menos. En esta página de la doc
http://developers.facebook.com/docs/appsonfacebook/pagetabs/
En el último apartado explica que existe una variable llamada signed_request que tras un procesado (viene todo explicado) te ofrece la información sobre la web desde donde se está accediendo a la app.
Gracias de todas formas! y enhorabuena una vez más por tu estupendo trabajo.
Excelnte info!!
pero no me sale nada :S siempre recrago la pestaña y sale error del explorar diciendo..es posible un error de programación y ya..peor no me genrea el archivo error log ni naa de eso ..que hago????
Gracias Divid,
Es dificil saber qué te puede pasar. Revisa todo el código para ver dónde puede estar el error.
Me sirvio de mucho ! Gracias:
Solo una consulta!! como podria hacer para que la auntenticacion sea en un popup !!! y no en la misma ventana !! como haria eso ?????
Sabes algo sobre el nuevo SDK que solicita FACEBOOK, es este mismo el que tu recomiendas aqui?
y también sobre el SSL que a partir del 1 de Octubre se tiene que instalarse en las aplicaciones y las paginas de Fans alojadas en servidores externos?
Gracias
Toda la autentificación se tendrá que hacer por OAuth 2.0 y se pedirá a las aplicaciones que estén alojadas en un servidor con certificado SSL. Si no está con certificado SSL al usuario que entre en forma segura le saldrá un mensaje indicándole la razón por la que no puede entrar en esa aplicación. Puedes ver más información en http://developers.facebook.com/blog/post/572/
Hola. te hago una consulta. tengo mi landin page que tiene links a otras paginas que se vinsualizan dentro de la misma landing page, existe alguna forma de enviar un dato POST o GET y que lo capture alguna de las paginas con las que se enlaza la principal del landing page??? Estoy haciendo una especia de concurso de fotografia pero quiero que cuando el usuario de click en el link de una foto cargue esa foto dentro de facebook. Se puede?
yo qusiera saber si no le es molestia como puedo insertar datos en mi base de datos pero de los usuarios en facebook o sea consultar la base datos facebook y actualizar la mia con sus datos de usuario, token y demas
gracias
Hola Alberto, Para crear una base de datos y archivar ahí los datos necesitarás conocimientos de Mysql y PHP, por ejemplo. Ahora que ando con más tiempo voy a ver si hago un artículo sobre cómo hacerlo.
gracias gracias por responder, bueno yo soy programador web me defiendo mas o menos pero ahora estoy trabajando aplicaciones facebook y la verdad no logro introducir los datos en mi bdatos, no se como es, si fql veo que se selecciona los campos que quiere pero no veo como hago para guardarlos en mi bdatos, en verdad se lo agradesco su ayuda pues llevo mas de dos semana en eso y no se que hacer,
gracias senor
saludos
interesante y totalemtne genial el tutorial, tengo una consulta un poco digamos estupida… pero como miercolores hago para saltarme el ssl que me pide facebook? ja… antes lo dejaba en blanco y listo… ahora no me deja… tengo una aplicacion que se conecta a una base de datos mysql etc.. pero ya no me funciona… que me recomendas?
Gracias Juan,
Lo malo es que lo han puesto como obligatorio desde el 1 de Octubre….
me lleva la que me trajo (por no putear)… y conoces alguna aplicacion iframe que este ya puesta en facebook? me cance de buscar, encontre pero no me convencio ninguna… vos sos experto en esto, tenes alguna idea?
Depende de lo que necesites. Hay muchas aplicaciones para crear pestañas personalizadas, pero no puedo recomendarte ninguna en especial, porque no he usado ninguna, ya que hacemos nosotros los desarrollos. Si sólo quieres un formulario tiene buena pinta esta: http://codeeta.com/how-it-works/
y los certificados ssl los contratan para cada aplicacion? estan un poco caros para contratar uno por aplicacion… bah, me parece a mi… no se.
No, puedes contratar un certificado SSL para tu servidor y alojar en él todas tus aplicaciones. Los certificados son baratos, sobre cien euros al año e incluso menos.
Buenas tardes Juan,
enhorabuena de entrada por tus tutoriales tan completos. Los he descubierto hace un par de días y me están sirviendo de mucho.
Ahora tengo una pregunta para ti. Estoy teniendo problemas para enlazar un CSS al index_fb.php que he creado como fichero raíz para facebook. ¿Hay algo -algún script- que deba incluir en este y otros ficheros que quiera enlazar a este index_fb.php? Porque además le he introducido una consulta a base de datos en php, y los datos cadena de texto o integer me los muestra bien, pero le pido que cargue una imagen, cuyo enlace al directorio se encuentra en la base de datos, y tampoco la muestra.
El script está bien, pues lo he probado en mi localhost y funciona: muestra los campos requeridos y también la imagen.
A ver si puedes echarme un cable, estoy atascado y sin saber hacia donde tirar.
Saludos y de nuevo enhorabuena por el buen trabajo.
Luis
Gracias Luis. Tendría que ver el código para saberlo. Si tienes Firebug en Firefox o inspeccionas el elemento con Chrome quizás descubras qué pasa con las rutas que dices que parecen estar mal. Otra cosa que tienes que tener en cuenta es que una vez que cargues una pestaña desde Facebook la hoja de estilos se queda archivada en el caché de Facebook. Si necesitas un cambio necesitarás crear una hoja de estilos con un nombre diferente.
Hola y gracias Juan por tus sugerencias,
logré solucionarlo y funciona perfectamente. Resultó ser un tema de caché, tal y como apuntaste.
Saludos,
Luis
hola senor, por fin llego a hacer el articulo sobre guardar y almacenar datos de facebook en una base datos???, no se olvide de mi cuando pueda por favor explicame como puedo resolver eso que no lo logro hacer, usted me comento que realizaria un articulo sobre eso, bueno gracias nuevamente por su atencion y su ayuda
Alberto
Hola Alberto,
Lo tengo casi listo, sin falta estará la semana que viene. Perdón por la tardanza pero últimamente tengo muchísimo trabajo y lamentablemente tengo el blog un poco desatendido (((
ok ante nada gracias por su atencion y no se preocupe yo espero, seguire en contacto con usted y su blog pues lo considero uno de los mejores, pues la explicacion de los articulos es muy buena y bien desarrollada,
gracias
Gracias Alberto
hola senor quisiera consultarle algo a ver si me puede ayudar yo quiero un upload photo o sea quisiera subir photo a un album determinado u no logro hacerlo, si no le es molestia me pudiera dar alguna pista al respecto
gracias a usted
Alberto
Hola buenas.. tengo el mismo problema de “a URL indicada no esta permitida por la configuración de la aplicación.”, comentaban en la lista de comentarios que era porque no tenia activado el access token.. como se activa?
Un saludo y gracias por compartir esta información!
graciasss me salvaste un monton.
como puedo sobtener solo el nombre???
Muy bueno el tutorial…
como puedo generar la opción “Ver la página de perfil de la aplicación” no me sale esa opción en la lista de Vínculos relacionados, por lo tanto no puedo colocar la aplicación en una fan page
Facebook ha quitado esa opción. Para poder añadir una pestaña ahora tienes que poner en tu navegador una URL que incluya el ID de la aplicación y la URL de Canvas y al ir a la misma te sale una ventana que te dice dónde quieres poner la pestaña.
Un trabajo magnifico pero ¿como implemetar esto en prestashop?
muy bueno el tutorial….hize todo lo que indicaron, pero no me aparece las ventanas de autentificacion de la la aplicacion,
ayuda!!!
Genial, me ayudaste un monton.
Estoy parado hace dias, buscando la forma de enviar estos datos a mysql.
He leido que cuando se realiza la autenticacion del usuario, esa misma sesion se puede guardar. Pero no he podido avanzar.
Usted me podria dar una mano?
Hola juan, primero quiero felicitarte por el tuto.
Igualmente tengo un problema que no puedo solucionar.
Estoy haciendo cursando una materia de la universidad en donde tengo que hacer una aplicacion de facebook que tenga acceso a la mayor cantidad de informacion posible. Con lo cual toda la informacion que dejaste me viene muy bien. La idea es no perder mucho tiempo en crear la aplicacion para centrarme en otras cosas mas precisa de la materia.
Probe tu ejemplo pero me da un error, el cual figura en el “error_log” como “Bad Signed JSON signature!”. si no entiendo mal este error es disparado en “base_facebook.php” pero mi duda es ¿por que? y como solucionarlo.
Muchas Gracias!!!
saludos, veo este turorial es de mayo de 2011 será que han actualizado algo? o sigue funcionando igual
AYUDA POR FAVOR TENGO ESTE ERROR
GRACIAS
API Error Code: 191
API Error Description: The specified URL is not owned by the application
Error Message: Invalid redirect_uri: Esta URL no está permitida por la configuración de la aplicación
Hey muchas gracais de verdad que me ha servido un monton tu tutorial, estare pendinte de tu sitio bendiciones
Hola ya estoy haciendo mi aplicacion y si que me funciona de maravilla, gracias por arreglar lo de los ejemplos, solo queria consultarte, como dentro de la aplicacion ya estamos accediedo a mas datos, como podria publicar su email de contacto en el for que hacemos
muchas gracias por el tutorial muy bueno, con los nuevos cambios en la api de facebook me ah servido bastante, por cierto tenia fallas al intentar probarlo, me aparecía solo la pantalla en blanco y todo fue por el servidor, estaba alojando la aplicación en un servidor gratuito y no funcionaba nada, lo cambie a un servidor de paga y funciono a la perfección…
En realidad mi comentario solamente es para agradecer tan valiosa información que comparten ustedes en su blog.
Saludos y muchas gracias por este y muchos más artículos que contribuyen al diario vivir.
Tengo un problema ya hize todo como viene en el tutorial pero ya cuando lo intento correrpero despues de permitirle a la aplicasion acceder a mis datos se queda en un bucle, osea se redirrecciona infinidad de veces, cual seria el problema????
Excelente aporte men. un saludo
tengo un problema, el codigo me funciona bien como index
pero cuando utilizo otro index que contiene un boton y este redirecciona al documento con este codigo, me vuelve a cargar el index, a que se debe esto?
Considero que el artículo sobre la creación de App en Facebook debe actualizarse con las nuevas pantallas y opciones que pide. Al menos intenté seguirlo tal cual lo tienes publicado y hay muchas cosas que difieren. Amerita una actualización. Este esta muy genial.
Hola buenas tengo una consulta que hacerte, mi consulta es referente a una aplicacion de facebook que yo hice pero lo que sucede es que cuando quiero entrar a mi aplicación sin necesidad de iniciar sesion en facebook no puedo verla me sale algo referente al SSL pero cuando entro a otras cuentas de facebook por ejemplo la de CocaCola y entro a su aplicación si iniciar sesion si puedo verlas… queria como y que debo hacer para mis aplicaciones puedan tener esos privilegios. Gracias por su respuesta.
Hola Omar,
Facebook pide que tengas un certificado SSL donde tengas alojada la aplicación de Facebook, ese debe ser el problema.
Hola mi estimado no se si es lo que ando buscando, he visto que hoy en dia existen paginas que nos hacen llegar la invitacion desde facebook en donde cuando uno hace un click nos lleva a una ventana que nos pide permiso a acceder a todo nuestro contenido muro etc, aceptando uno recien puede ver digamos el video o noticia, y lo curioso es en la web a cada impresion de cada hoja que uno navegue resulta que sin darnos cuenta en nuestro facebook se comienza a compartir, como ejemplo sip veo un video automaticamente se publica en mi muro lo que estoy mirando, y eso hace que muchos se interesen y tambien entren a la web donde estoy, ahora lo que quisiera saber que tengo que tener para yo tambien poder agregar esa aplicacion en mi facebook para poder generarme mas visitas a mi web. sip me pudieras ayudar o tambien decirme sip brindas el servicio para poder configurar esa aplicacion en mi facebook y mi pagina.