Quinta y última parte de esta guía introductoria al desarrollo de aplicaciones web sobre la Facebook Platform. Ya conoces el ecosistema de tecnologías de Facebook, sabes cómo crear distintos tipos de aplicaciones, y conoces el SDK JavaScript por completo. Hoy vamos a ver el PHP SDK.
Antes de seguir leyendo, puedes echar un vistazo a la página GitHub donde está alojado el proyecto PHP SDK, y desde donde te lo podrás descargar. Nosotros vamos a hablar sobre la última versión estable, la 3.1.0.
1 Instalación
Ya has dado de alta tus aplicaciones, y ahora quieres saber cómo incorporar el PHP SDK a alguna de ellas. Lo primero, deberás descargarte el SDK de su página en GitHub y descomprimirlo. Verás tres carpetas:
Se incluye:
- changelog.md – Fichero que registra todos los cambios entre las distintas versiones del SDK.
- examples – Un ejemplo de uso.
- readme.md – Fichero ‘léame’ con documentación básica.
- src – Bibliotecas del SDK. Esta carpeta es la que usaremos en nuestro proyecto.
- tests -Batería de tests unitarios para comprobar el correcto funcionamiento del SDK.
<?php require_once("src/facebook.php"); $config = array( 'appId' => 'TU_APP_ID', 'secret' => 'TU_APP_SECRET', 'fileUpload' => false, // opcional ); $facebook = new Facebook($config);
Es decir, cargamos el SDK, creamos un nuevo array con la configuración del objeto Facebook, y finalmente lo creamos. ¡Ya está! Ya puedes usar el PHP SDK.
2 Métodos básicos
Vamos a ver 6 métodos getter y setter básicos:
Facebook::getAccessToken
Mediante este método podremos obtener el accessToken en uso. Los access token son objetos que definen los permisos que tenemos para interactuar con un determinado usuario. Puedes ver más sobre el objeto access_token en la documentación de los permisos.
Facebook::setAccessToken
Del mismo modo, podremos establecer el accessToken con el que funcionará nuestra aplicación. Se sobreentiende que este AccessToken ha sido obtenido por algún medio ajeno al SDK de PHP (por ejemplo, mediante cURL).
Facebook::getApiSecret
Nos devuelve el APP_SECRET de la aplicación.
Facebook::setApiSecret
Permite establecer a mano el APP_SECRET para nuestra aplicación
Facebook::getAppId
Devuelve el APP_ID de nuestra aplicación
Facebook::setAppId
Nos permite establecer a mano el APP_ID de la aplicación
3 Métodos de autenticación
Lo primero es lo primero. Vamos a ver cómo podremos autenticar a un usuario, y cómo solicitarle permisos. Para ello, vamos a revisar antes cuatro métodos más:
Facebook::getLoginStatusUrl
Este método nos permite especificar URLs según el estado de login del usuario, de manera que en función de este estado, nos redirigirá a un URL u otra. Hay tres estados posibles:
- ok_session – El usuario ha iniciado sesión en Facebook.
- no_user – El usuario no ha iniciado sesión en Facebook.
- no_session – El usuario no está conectado a nuestra aplicación.
El valor devuelto por esta URL es una dirección de Facebook que se encarga de llevar a cabo por nosotros la redirección. Puedes probar aquí para ver en funcionamiento este ejemplo:
if (isset($_GET['status']) && !empty($_GET['status'])) { switch($_GET['status']) { case 1: echo 'Te conozco'; break; case 2: echo 'No estás conectado a Facebook.'; break; case 3: echo 'Estás conectado, pero no te conozco.'; break; } echo "<br /><a href='http://www.chusete.es/facebook/phpdemo/getLoginStatusUrl.php'>Volver a intentar</a>"; } else { $params = array( 'ok_session' => 'http://www.chusete.es/facebook/phpdemo/getLoginStatusUrl.php?status=1', 'no_user' => 'http://www.chusete.es/facebook/phpdemo/getLoginStatusUrl.php?status=2', 'no_session' => 'http://www.chusete.es/facebook/phpdemo/getLoginStatusUrl.php?status=3', ); header("Location: ".$facebook->getLoginStatusUrl($params)); }
Facebook::getLoginUrl
Construye por nosotros la URL desde la que accedemos a la página que nos muestra el diálogo OAuth. Acepta dos parámetros:
- scope – Como ya sabes, la lista de permisos que queremos solicitar al usuario.
- redirect_uri – Dirección a la que se redirigirá tras el diálogo OAuth.
$params = array( 'scope' => 'read_stream, friends_interests', 'redirect_uri' => 'http://chusete.es/post_login_page', ); $loginUrl = $facebook->getLoginUrl($params);
De este modo, en $loginUrl tendremos una URL que nos mostrará el diálogo OAuth que solicita al usuario permisos para consultar su muro y para conocer los intereses de sus amigos. Tras aceptarlo, se le redirigirá a la dirección de redirect_url.
Facebook::getLogoutUrl
Del mismo modo que podemos generar la URL de inicio de sesión en nuestra aplicación, podemos crear otra para salir. Sólo debemos indicar un parámetro (opcional):
- next – URL a la que se le redirigirá al usuario tras hacer logout.
Facebook::getUser
Este método tan sólo nos devuelve el ID del usuario activo en nuestra aplicación.
4 Autenticación
Ya tienes la aplicación creada, ya has descargado el SDK, ya has instanciado un objeto de la clase Facebook, y ya conoces los métodos necesarios. Es el momento de ver cómo hacer un inicio de sesión en nuestra aplicación
Esto es lo que va a realizar nuestro ejemplo: Cuando el usuario acceda a la aplicación, si ha conectado con ella previamente, se le mostrará un mensaje de bienvenida. En caso contrario, le reenviaremos al diálogo OAuth para solicitarle permisos. Si los acepta, volverá a la aplicación, donde le daremos la bienvenida y le daremos la opción de cerrar sesión. En caso contrario, le mostraremos un mensaje lamentando que no haya conectado con nuestra súper app. Puedes ver aquí la demo.
Éste es el código:
$params = array( 'scope' => 'read_stream, friends_interests', 'redirect_uri' => 'http://chusete.es/facebook/phpdemo/', ); $loginUrl = $facebook->getLoginUrl( $params ); if ( $_GET['error'] ) { echo "Parece que no quieres usar la aplicación<br />"; echo "Si cambias de opinión, haz clic <a href='".$loginUrl."'>aquí</a>"; } elseif( $facebook->getUser() ) { $logoutUrl = $facebook->getLogoutUrl(array('next' => 'http://www.facebook.com/')); echo "Bienvenido!
<br />"; echo "Puedes <a href='".$logoutUrl."'>cerrar sesión</a> si lo deseas."; } else { header( "Location: ".$loginUrl ); }
Como de costumbre, vamos a revisarlo:
- En primer lugar construímos la URL en la que se muestra el diálogo OAuth, generado a partir de unos determinados parámetros:
- Solicitamos algunos permisos extra: read_stream y friends_interets.
- Definimos la URL actual como la dirección a la que debe retornar el diálogo OAuth tras la autorización (o no) del usuario.
- Ahora seguimos la ejecución. Recuerda que, como hemos definido esta misma URL como dirección de retorno, cuando el usuario autorice (o no) nuestra aplicación, volveremos aquí:
- Si está presente el parámetro GET ‘error‘, significa que el usuario no autorizó la aplicación. En ese caso mostramos un mensaje con una carita triste, y le damos de nuevo la opción de conectar con la aplicación.
- En caso contrario, comprobamos si hay algún usuario reconocido. Si así fuera, mostramos un mensaje de bienvenida y un link de logout.
- Y si no hubiera ningún usuario reconocido, redirigiríamos automáticamente mediante la función header() a la URL del diálogo OAuth desde la que podrá conectar con la aplicación.
5 Resto de métodos
Lo creas o no, hemos visto prácticamente todos los métodos del PHP SDK. Vamos a revisar los cuatro que nos quedan:
Facebook::api
Método polimórfico que nos permite realizar llamadas al Graph API (incluso con FQL, el Facebook Query Language). Puede lanzar excepciones de tipo FacebookApiException. Para poder realizar consultas que no sean públicas, debemos asegurarnos previamente de que tenemos permisos suficientes de ese usuario. Puedes probar esta demo, de la que tienes a continuación el código:
<?php require_once("src/facebook.php"); $config = array( 'appId' => '256797284360192', 'secret' => '1e4791731181402f02399fbe174cdb0d', 'fileUpload' => false, // opcional ); $facebook = new Facebook($config); $loginUrl = $facebook->getLoginUrl(); $user = $facebook->getUser(); ?> <html> <head> <meta charset="UTF-8" /> </head> <body> <?php if($user) { try { $_SESSION['user_id'] = $user; $user_profile = $facebook->api('/me','GET'); echo "Nombre: " . $user_profile['name']; } catch(FacebookApiException $e) { echo "Error. Posiblemente ha expirado la sesión. "; echo "<a href='".$loginUrl."'>Volver a iniciar sesión</a><br />"; $result = $e->getResult(); var_dump($result); } } else { echo "Haz clic <a href='".$loginUrl."'>aquí</a> para iniciar sesión"; } ?> </body> </html>
FacebookApiException
Cuando realizamos una consulta al API de Facebook mediante Facebook::api, podrán lanzarse excepciones, por lo que cada llamada a Facebook::api deberá ir dentro de su bloque try-catch correspondiente. Las excepciones tendrán estos dos métodos:
- getResult – Devuelve un objeto array con el mensaje de error que devuelve el servidor.
- getType – Devuelve el tipo de excepción, como por ejemplo OAuthExcepcion.
Facebook::getSignedRequest
En la cuarta parte de esta guía vimos qué es el objeto signedRequest. Como dijimos, se trata de un objeto que sirve para compartir información entre Facebook y nuestra aplicación. Desde JavaScript no era seguro su uso, ya que, al no deber hacer público el APP_SECRET de una aplicación, no podríamos tener la certeza de que el contenido del objeto signedRequest estuviera realmente firmado por Facebook.
Sin embargo, desde PHP sí podremos, y este método realiza todo el trabajo sucio por nosotros: decodifica, comprueba la firma, y devuelve el objeto en forma de array PHP. De esta forma, con el objeto devuelto por este método podríamos comprobar en una aplicación de tipo Page Tab si el usuario es o no fan (sin necesidad de solicitar ningún permiso).
Consulta la documentación de signedRequest para más información.
Facebook::setFileUploadSupport
Habilita o deshabilita el soporte para subida de ficheros. Éstas se realizarán mediante llamadas al Graph API con el método Facebook::api utilizando el método de envío POST. Podemos ver el ejemplo de la documentación de Facebook:
$facebook->setFileUploadSupport(true); $img = '/tmp/mifoto.png'; $photo = $facebook->api( '/me/photos', 'POST', array( 'source' => '@' . $img, 'message' => 'Foto subida mediante el SDK de PHP!' ) );
Facebook::useFileUploadSupport
Indica si está o no habilitado el soporte para subir ficheros.
6 Y ahora qué
Si te has quedado con ganas de más, estás de enhorabuena, porque han quedado muchos conceptos en el tintero.
Otros SDK. Si tienes pensado desarrollar para Android, puedes echar un vistazo al Android SDK. Puedes hacer también lo propio con el iOS SDK si tu intención es crear una aplicación para iPhone o iPad.
Consultas más eficaces. Otro asunto interesante por explorar es el lenguaje FQL para realizar consultas a-la-SQL a Facebook. Mediante este método puedes llevar a cabo comportamientos que con el Graph API no podrías, como ejecutar consultas por lotes.
¡Internacionalizate! Es otra de las opciones que proporciona Facebook: habilita tu aplicación para que sea traducida, preparándola según las directrices de internacionalización de Facebook.
Todavía más APIs… Tienes a tu alcance Ads API, que te permitirá crear y monitorizar mediante código ambiciosas campañas publicitarias. O Credits API, con la que podrás permitir a tus usuarios comprar créditos de Facebook con los que adquirir nuevas funcionalidades o ítems en tu aplicación. Y Chat API, con la que podrás incorporar a tu página web, o aplicación nativa, un chat compatible XMPP compatible con Facebook.
Más sobre Graph API. Si te interesa conocer más acerca de las consultas por lotes, tienes un apartado íntegro dedicado a ellas. Tienes también una API de actualizaciones en tiempo real.
Juegos. Lo mencionamos de pasada, pero existe toda una API para que los desarrolladores de videojuegos puedan añadir logros y puntuaciones.
Social Design, es como llaman en Facebook a la forma de pensar cómo crear productos sociales, utilizando tres conceptos clave, comunidad, conversación e identidad. Ver más sobre Social Design.
Opciones, muchas más opciones de configuración:
- Configuración avanzada:
- Deauthorize Callback – Definir una URL a la que se hará un ping cada vez que un usuario se desvincule de tu aplicación (con información en el signedRequest).
- Migraciones – Facebook está en constante cambio. Puedes elegir qué tecnologías usar: las que están en uso o las obsoletas.
- Seguridad – Autorizar determinadas IPs para realizar peticiones en nombre de tu aplicación o para cambiar su configuración. Alertas por email.
- Publicidad – Puedes indicar las direcciones de correo de las cuentas de usuario utilizadas para la publicidad de la página.
- Datos de contacto – Enlaces a las URLs de privacidad, condiciones de uso, de soporte, etc.
- Roles – Desde donde podrás añadir otros usuarios a diferentes perfiles: Desarrollador, tester, usuarios de pruebas (usuarios falsos creados al vuelo), etc.
- Credits – Donde personalizas los parámetros de configuración necesarios para poder operar con créditos Facebook.
Nueva versión de Open Graph: Hasta ahora podía establecerse un vínculo entre un usuario y otro objeto con el verbo “me gusta”. Por ejemplo, “A Pedro le gusta Coca-Cola“. Tenemos un sujeto (Pedro), una acción (gustar), y un objeto (Coca-Cola). Hasta ahora el verbo era siempre “gustar”. Sin embargo, con esta nueva versión, podrá ser cualquier cualquier cosa: “María ha tomado un Big Mac“. Puedes seguir este tutorial paso a paso.
7 Resumen
Con suerte, habrás llegado hasta aquí. Eso significa que ya ha finalizado tu toma de contacto con el desarrollo de aplicaciones en Facebook. Dominas tecnologías básicas como los social plugins, open graph, o los diálogos. Sabes crear distintos tipos de aplicaciones, ya sea en una web externa, en un Canvas, o en un Page Tab. Conoces a fondo el JavaScript SDK y el PHP SDK. Has tenido una toma de contacto con el Graph API. Sabes autenticar y solicitar permisos a tus usuarios en cualquier escenario. Eres consciente del resto de tecnologías de Facebook que tienes a tu alcance. Sabes qué son los Social Channels, y cómo aprovecharlos para dar mayor visibilidad a tus aplicaciones. No está nada mal, ¿no?
Espero que hayas disfrutado de estos artículos tanto como yo, y ojalá puedan serte de utilidad.
¡Muchas gracias por haber seguido esta guía!.
que mal que este sea el ultimo post de introducción a facebook, los venia siguiendo a cada instante fueron de enorme utilidad y se agradece.
espero que sigas con el tema mas adelante, y podrías tocar el tema de como sacar provecho a un app en facebook, yo cree un pequeño juego y estoy buscando las formas de poder comenzar a ganar dinero con el, si puedes tocar el tema también estaré muy agradecido…
Saludos
Muy Buenas, antes de nada felicitarte por la excelente información que proporciona esta guía, ya que es lo mejor que he econtrado en castellano por la red. El motivo de mi comentario es que no consigo que me salga la misma ventana de dialogo OAuth que a tí, he probado todos los metodos de los que hablas (php, javascript…) y nada, me salen dos ventanas, la primera conecta con la app y la segunda solicita permisos, en cambio tus ejemplos online lo hacen todo de una… Ya no se que hacer porque nadie habla de este problema que tengo y te agredecería que me echases un cable. Saludos!
Hola Alberto
¿Podrías copiar y pegar el código que estás utilizando para generar el diálogo de autenticación?
Mira, es el ejemplo de la tercera parte de tu guia…
FB.init({
appId : ’111111111111111′,
status : true, // comprobar estado de login
cookie : true, // habilitar cookies para permitir al servidor acceder a la sesión
xfbml : true, // ejecutar código XFBML
channelURL : ‘http://www.dominio.com/channel.html’, // fichero channel.html
oauth : true // habilita OAuth 2.0
});
FB.Event.subscribe(‘auth.login’, function () {
window.location.reload();
});
FB.Event.subscribe(‘auth.logout’, function (response) {
window.location.reload();
});
FB.getLoginStatus(function(response) {
if (response.authResponse) {
document.getElementById(‘fb-login-button’).style.display = ‘none’;
document.getElementById(‘user-box’).style.display = ‘block’;
FB.api(‘/me’, function(user) {
if(user != null) {
var image = document.getElementById(‘image’);
image.src = ‘https://graph.facebook.com/’ + user.id + ‘/picture’;
var name = document.getElementById(‘name’);
name.innerHTML = user.name
}
});
}
});
function userLogout() {
FB.getLoginStatus(function(response) {
if (response.authResponse) {
FB.logout();
}
});
}
function publishStream() {
var body = ‘Probando la demo del SDK de JavaScript de Facebook’;
FB.api(‘/me/feed’, ‘post’, { message: body }, function(response) {
if (!response || response.error) {
alert(‘Ha ocurrido un error’);
} else {
alert(‘¡Éxito! Entra a tu muro y verás una nueva publicación’);
}
});
}
function requestDialog() {
FB.ui({
method: ‘apprequests’,
message: ‘Echa un vistazo a esta demo.’,
title: ‘Compartir aplicación’
});
}
Y haciéndolo igual no consigo hacer que muestre una sola ventana como haces tu en los ejemplos….
¿Podrías, entonces, compartir la URL para probarlo? Si lo prefieres, mándamelo por correo a chusete@gmail.com.
Muy buenas!!
Ya lo tengo resuelto, simplemente era la opción de Enhanced Auth Dialog, que la tenía hablitada!! Lo que no entiendo es que por defecto venga la otra ventana, que se supone que es mejor no ?? De todas formas gracias por tu atención, seguiré de cerca este magnifico blog! Saludoss!!
Chusete, pero que grande eres cojones! Impresionantes posts tio!
Guau Nacho!
Me alegro de que te hayan gustado! Por su puesto, si has echado algo en falta dímelo, para ampliarlos.
Hola, primeramente felicitarte por la página ya que no suele haber muchas de desarrollo de aplicaciones de facebook en español, y esta es muy completa.
He estado viendo tus tutoriales, pero la duda q no he podido resolver la duda que tenía.
Estaba haciendo una aplicación y en una parte quería mandar invitaciones para una determinada accion a los amigos del usuario que este quisiera.
He probado con
function sendRequestViaMultiFriendSelector() {
FB.ui({method: ‘apprequests’,
message: ‘My Great Request’,
}, requestCallback);
}
Y funciona bien, pero esta opcion solo manda el enlace a mi aplicacion, yo queria que ademas enviase alguna variable, como por ejemplo https://apps.facebook.com/nombre_aplicacion/index.php?regalo=2005&usuario=5
Siendo el numero del usuario el que realizo la invitacion a sus amigos.
Del mismo modo en que otras aplicaciones estilo pet society o farm ville envian peticiones para “pedir madera para hacer una casa, ayuda para recuperar mascota, etc”
Tienes idea de como se hace este tipo de peticiones? Tienes pensado hacer algún tutorial sobre esto? Muchas gracias tu atención, un saludo.
Hola Rob
Muchas gracias por comentar.
No estoy seguro de si con esto se podrá, pero si te fijas, el Request Dialog tiene un parámetro que se llama ‘data’, con la siguiente descripción:
Que traducido mal y rápido significaría: “Opcional, datos adicionales que puedes añadir para hacer seguimientos. Se almacenará como parte del objeto de petición que se crea. El tamaño máximo es de 255 caracteres“. ¡Parece tener toda la pinta de que es con esto con lo que se hace!
Para recuperar la información cuando el usuario invitado ha aceptado la petición, puedes echar un vistazo a la documentación de Facebook sobre Social Channels, apartado Request.
Ahora te voy a pedir yo un favor: Si te ha funcionado, por favor coméntanoslo para así saberlo. Y si no te ha funcionado, dímelo y publico un post sobre eso (que ya me ha picado la curiosidad). ¡Gracias!
¡Un saludo!
Saludos, me comunico porque estoy buscando una aplicación similar a la creo ROB según su comentario, si alguien tiene el cogido o la aplicación funcionando, no dude en comunicarse para llegar a algún acuerdo.
La aplicación que necesito tiene que poder invitar amigos y realizar un seguimiento de las invitaciones de los amigos…para luego hacer un ranking de acuerdo a la cantidad de usuarios referidos
ok, gracias por la indicación, a ver si entre mañana y pasado consigo hacer algo y os comento.
Bueno, os comento un poco así por encima y si teneis alguna duda me preguntais lo q sea.
Por una parte tenemos
function sendRequestViaMultiFriendSelector() {
FB.ui({method: ‘apprequests’, message: ‘Texto con la peticion.’, data: ‘tipo_de_peticion|id_del_usuario_que_esta_ejecutando_la_aplicacion’}, requestCallback);
}
function requestCallback(response) {}
Nos aparece el friend selector y a todos los que le indiquemos les aparecera una invitacion en el icono del globo de facebook (junto a los mensajes y las peticiones d amistad) un mensaje indicando q se la hecho una peticion desde tal aplicacion, y por otra parte aparecera tambien les aparecera en las aplicaciones el icono d nuestra aplicacion y un cuadradito rojo indicando el numero de peticiones.
Llegados a este punto se pueden presentar dos casos.
1) El usuario pulsa el globo terraqueo
2) El usuario pulsa la en el icono de nuestra aplicacion donde sale el cuadradito rojo con el numero de aplicaciones una en concreto
si pulsa el globo terraqueo la variable $_REQUEST["request_ids"] contendra todas las peticiones que la gente le ha hecho a esa aplicacion, si pulsa en la segunda opcion solo se enviara una id
Esta id la necesitaremos luego, pero surge el problema d q hacer si nos mandan varias, yo en mi caso opte por tomar la primera en otros sitios crean una pantalla y ahi seleccionas la q quieres etc etc.
lo q hice yo fue esto.
“”, ‘id’ => “”);
if (isset($_REQUEST["signed_request"])){
$request_url =”https://graph.facebook.com/”.$_SESSION["me"]['id'].”/apprequests?”.$access_token;
$requests = file_get_contents($request_url);
//Se revisa si hay peticio
if (isset($_REQUEST["request_ids"])){
//Se obtiene el id de peticion, si hay varios cogemos el primero
$peticiones = limpiar($_REQUEST["request_ids"]);
$peticion = explode(‘,’, $peticiones);
$atender_peticion=$peticion[0];
$data = json_decode($requests);
//Se recorren las peticiones existentes
foreach($data->data as $item) {
//Se obtienen los datos de la peticion actual
$datos = limpiar($item->data);
$peticion_completa = limpiar($item->id);
$peticion_array = explode(‘_’, $peticion_completa);
$peticion_actual=$peticion_array[0];
//Si existe la peticion indicada se inicia la redireccion
if($peticion_actual==$atender_peticion){
$datos_array = explode(‘|’, $datos);
$redireccion['sec'] = limpiar($datos_array[0]);
$redireccion['id'] = limpiar($datos_array[1]);
}
}
}
}
De este modo tomo la peticion y redirijo al usuario a la seccion que sea.
Una vez hemos redireccionado al usuario a dd queriamos tendremos que decidir cuando vamos a borrar la peticion de su lista de peticiones
yo en mi caso indico q se borren todas las que tiene del mismo tipo una vez haya realizado la accion q se le pedia
$token_url = “https://graph.facebook.com/oauth/access_token?”.”client_id=”.$_SESSION['$appId'].”&client_secret=”.$_SESSION['secret'].”&grant_type=client_credentials”;
$access_token = file_get_contents($token_url);
$request_url =”https://graph.facebook.com/”.$_SESSION["me"]['id'].”/apprequests?”.$access_token;
$requests = file_get_contents($request_url);
//Process and delete app requests
$data = json_decode($requests);
foreach($data->data as $item) {
//Se obtienen los datos de la peticion actual
$datos = limpiar($item->data);
$id = $limpiar(item->id);
$peticion_array = explode(‘_’, $id);
$peticion_actual=$peticion_array[0];
if(“test_b”.”|”.$_SESSION["$idObjetivo"]['id']==$datos){
$delete_url = “https://graph.facebook.com/” .
$id . “?” . $access_token;
$delete_url = $delete_url . “&method=delete”;
$result = file_get_contents($delete_url);
}
else if(!comprobarAmistadBoolean($id)){
$delete_url = “https://graph.facebook.com/” .
$id . “?” . $access_token;
$delete_url = $delete_url . “&method=delete”;
$result = file_get_contents($delete_url);
}
}
Tambien hay una parte en donde compruebo si la peticion actual corresponde a algun amigo, como en mi aplicacion solo puedes interactuar con amigos, borro las q no sea, por si alguien dejo de ser amigo de otro. Si no hacemos esto el numero del cuadradito rojo d nuesta aplicacion seguira acumulando peticiones eternamente.
Me cole este trozo de codigo
$token_url = “https://graph.facebook.com/oauth/access_token?”.”client_id=”.$_SESSION['$appId'].”&client_secret=”.$_SESSION['secret'].”&grant_type=client_credentials”;
$access_token = file_get_contents($token_url);
$redireccion[]=array( ‘sec’ => “”, ‘id’ => “”);
despues de:
“Esta id la necesitaremos luego, pero surge el problema d q hacer si nos mandan varias, yo en mi caso opte por tomar la primera en otros sitios crean una pantalla y ahi seleccionas la q quieres etc etc.
lo q hice yo fue esto.
“”, ‘id’ => “”);”
Genial Rob!
Me alegro de que hayas dado con ello.
Veo que sí se hacía el seguimiento de la invitación mediante el parámetro data. De lo que no tenía ni idea era de lo de borrar las peticiones de la lista de peticiones. Es un caso de uso muy interesante, por lo que, si no te importa, espero escribir pronto un post sobre ello.
¡Muchas gracias por compartirlo!
Todo lo contrario, cuanta más información haya y mejor esté explicada mejor. Para lo que sea avisa. Un saludo.
Estimados,
Estoy trabajando con la funcion
function sendRequestViaMultiFriendSelector(){
FB.login();
FB.ui({method: ‘apprequests’,
appId : ’454521230454′,
redirect_uri : ‘http://ejemplo.cl/’,
message: ‘Envia a tus Amigos’
}, requestCallback);
}
Me funciona bien, pero quiero cambiar el idioma del cuadro y la notificacion a Español.. como lo puedo hacer??
¿Desde que URL estás insertando el SDK JavaScript en tu aplicación? ¿Lo estás incluyendo así?
<script type="text/javascript" src="http://connect.facebook.net/es_ES/all.js"></script>
¿Qué idioma tienes habilitado en tu cuenta personal de Facebook?
Claramente estoy llamando el js en ingles.. lo modifique y funcionó de maravillas…
Muchas Gracias Estimado!!
Desde Chile, un abrazo.
Hola. Enhorabuena por este manual. Quiero introducir mi aplicacion en facebook pero tengo un problema. Lo que quiero es que al buscar o compartir mi aplicacion en facebook, a un usuario que no esta autentificado le salga directamente el Auth Dialog, y no se como hacerlo. Lo maximoo que he conseguido es hacer un boton para que me vaya al Auth Dialog. Pero yo quiero que vaya directamente.
A ver si me puedes ayudar.
Gracias.
Hola, estoy tratando de hacer funcionar el sendRequestViaMultiFriendSelector, funciona bien la parte del que envia, pero nunca veo que le llegue la notificacion al usuario invitado!
Alguien me puede ayudar?
Gracias!
Me e quedado picado !
deseoso de la 6ta parte
Tengo miles de dudas en la cabeza
Tengo un codigo en progreso
pido tu asesoria o guia
Eres fenomenal!
(este es mi msn jensen7ice @ msn.com)
admirador tuyo.
Chusete sos de lo mejor, he visto millones de tutoriales y entende todo con este.
Holaaa nuevamente por aca con otra duda… resulta que estoy enviando la invitacion a mi aplicacion a mis amigos y la envia correctamente, el problema es que no me llega una respuesta:
function requestCallback(response) {
alert(‘Responde..’);
}
aca deberia ejecutarse el alert..!! pero no hace nada… Necesito rescatar los id de mis contactos a quienes les he enviado la notificacion.
Este es el codigo:
FB.init({
appId : ’265955616844331′,
frictionlessRequests: true
});
function sendRequestViaMultiFriendSelector(){
FB.login();
FB.ui({method: ‘apprequests’,
appId : ’265955616844331′,
redirect_uri : ‘http://superpollo.udf.cl/facebook/cosina/’,
message: ‘Envia Recetas a tus Amigos’
}, requestCallback);
}
function requestCallback(response) {
alert(‘Responde..’);
}
Saludos,
Muchas Gracias, son fenomenales..!!!
Hola, te felicito por tu tutorial, me ayuda en mucho, solo quiero hacer una consulta, yo en realidad soy nuevo en esto y acabo de hacer como indicas el sdk de la aplicacion, mi pregunta es mi aplicacion ya esta creada en mi ftp y todos estos archivos el index.php y la carpeta src donde las pego junto a mi aplicacion o q ese detalle no me queda claro. agradesco su respuesta.
Que tal, apenas estoy empezando con esto del desarrollo de aplicaciones para facebook y se me presento el siguiente problema en mi aplicación obtengo el id del usuario que esta activo dentro de la aplicación, cuando lo pruebo con mi cuenta personal que es con la que estoy registrado como administrador de la aplicación me muestra sin ningún problema mi ID pero si entro a la aplicación desde otra cuenta de facebook no me muestra nada, quisiera saber si sabes a que se debe esto.