martes, 15 de mayo de 2012

Pasar parámetros por URL a un TAB de facebook (PHP API)


Hace algunos días me encontré con pequeño inconveniente al tratar de implementar una aplicación
en Facebook que permitiera enviar información de un usuario a otro en un Tab de Facebook, desde hace mucho tiempo pensé que enviar estos parámetros por query string a una app embebida en un TAB de facebook era imposible pero investigando un poco encontré la solución:

El objeto signed_request es un parámetro tipo JSON que usa Facebook para pasar información a las aplicaciones en diferentes escenarios a traves de HTTP POST.  Para mayor información de este parámetro la documentación oficial del mismo se encuentra aquí

Volviendo al caso concreto de un Tab de facebook  el cual nos interesa, podemos encontrar que en el signed_request  contiene un  parametro  con el nombre de app_data que es el que contiene la informacion que pasamos por GET en nuestra aplicacion

Ej: observando esta URL

https://www.facebook.com/NOMBRE_FAN_PAGE/app_ID?app_data=MiParametro

se esta asignando el valor de MiParametro a app_data

Para acceder a el a través de PHP usaremos la siguientes funciones (Recordemos que debemos usar el API oficial de Facebook para PHP):

include ('facebook.php');

$app_id = "APP_ID";
$app_secret = "APP_SECRET";
$facebook = new Facebook(array(
    'appId' => $app_id,
    'secret' => $app_secret,
    'cookie' => true
));

if (isset($_REQUEST['signed_request'])) {
$temp = $facebook->getSignedRequest();
$uid = $temp["app_data"];
}

El llamado del método  getSignedRequest(), nos genera un JSON PHP con toda la información proveniente del parámetro signed_request  enviado por Facebook a nuestro tab, y a través del parámetro "app_data" lo podremos acceder.

Hay un aspecto interesante y que puede confundir a algunos (mi caso) y es el de suponer que si uso el envío de un parámetro diferente de esta forma:

https://www.facebook.com/NOMBRE_FAN_PAGE/app_ID?app_data=MiParametro&mensaje=hola mundo!

nos haría suponer que el objeto signed_request  recibirá el parámetro "mensaje" pero no es así, si vaz a enviar mas de un parámetro codificarlo como otro JSON o XML por ejemplo.

Saludos!
y hasta pronto!








miércoles, 9 de mayo de 2012

La función Facebook.init de AS3 no responde







Hace algunos días por temas de actualización el el SDK de JAVASCRIPT en el archivo  http://connect.facebook.net/en_US/all.js  muchas aplicaciones de FACEBOOK en ACTIONSCRIPT dejaron de funcionar, si tienes algún problema respecto a tema de inicializacion de tu aplicacion en AS3 te recomiendo que sigas los siguientes pasos:


  • Elimina el api GraphAPI_Web_1_8_1.swc de tu proyecto o archivo FLA
  • Descarga una modificación temporal del GRAPH API de AS3 aqui 
  • pega el directorio com en el root de tu proyecto y compila

Esperemos pronto salga una versión oficial del API de AS3 con estas correcciones