Evitar problemas de sesión con IE y las aplicaciones Facebook en iframe

Si desarrollais aplicaciones para Facebook y os encontráis con que Internet Explorer pierde la sesión, esto es debido a que Internet Explorer se hace un lío con las cookies y los iframes (que usa Facebook para incluir tu aplicación).

La solución es muy sencilla: meter un javascript comprobando si usa IE y en ese caso, mostrar un banner diciendo que si no cambias de navegador y usas Firefox o Chrome te enviaremos un par de matones a tu casa que lo harán por ti. Desgraciadamente, el kilo de matón sale muy caro, y hay mucho usuario que ni sabe que es Firefox o Chrome, así que nos tocará añadir esto a nuestro código:

header('P3P: CP="CAO PSA OUR"');

Así de simple.

Odio el Internet Explorer

Vía / Stack Overflow

Crear usuarios de prueba en Facebook con CodeIgniter

Si el otro día hablaba sobre la posibilidad que ofrece Facebook de crear usuarios de prueba para tus aplicaciones, ahora voy a pasar un pequeño script para CodeIgniter que permite crear esos usuarios.

El script necesita de la librería curl para PHP para facilitar la tarea:

$app_id = 'xxxxxx';
$canvas_page = 'http://apps.facebook.com/xxxx/';
$client_secret = 'xxx';
$app_token = 'access_token_de_la_aplicacion';
$this->load->library('curl');
// Creo 100 usuarios
for ($i=0; $i<100; $i++) {
  $usuario = $this->curl->simple_post('https://graph.facebook.com/'.$app_id.'/accounts/test-users?installed=true&permissions=read_stream', array('access_token' => $app_token));
}
// Los recupero
$usuarios = $this->curl->simple_get('https://graph.facebook.com/'.$app_id.'/accounts/test-users?installed=true&permissions=read_stream&access_token='.$app_token);
$usuarios = json_decode($usuarios);
foreach($usuarios->data as $i=>$u) {
  // Hago que el primer usuario (que sera el que use) sea amigo de todos
  if ($i==0) {
    $ppal = $u;
  } else {
    // Hago un dump para saber si se ha creado bien la amistad
    var_dump($this->curl->simple_post('https://graph.facebook.com/'.$ppal->id.'/friends/'.$u->id, array('access_token' => $ppal->access_token)));
    var_dump($this->curl->simple_post('https://graph.facebook.com/'.$u->id.'/friends/'.$ppal->id, array('access_token' => $u->access_token)));
  }
}

Usuarios de prueba para tus aplicaciones en Facebook

De lo que se entera uno, Facebook te ofrece la posibilidad de crearte usuarios de prueba para realizar tus aplicaciones en Facebook.

Mediante la API de Graph podemos entre otras cosas:

Crear usuarios

POST /app_id/accounts/test-users?installed=true&permissions=read_stream

Añadir usuarios a tu app:

POST /app_id/accounts/test-users?installed=true&permissions=read_stream
&uid=[test_user_id]&owner_access_token=[app_access_token_of_current_owner_app]

Acceder a ellos:

GET  /app_id/accounts/test-users

Eso sí, tiene ciertas limitaciones:

  • Número limitado de usuarios que puedes crear
  • Los usuarios de prueba pueden interactuar con otros usuarios de prueba pero no con usuarios reales.
  • Los usuarios de prueba no pueden hacerse fan de páginas públicas o crear contenido público como escribir en el muro de una página.
  • Pueden ser usados por los desarrolladores de la aplicación.
  • Un usuario de prueba jamás se puede convertir en usuario real.

Cómo autenticar usuarios con Facebook Connect usando PHP

Completo tutorial que nos explica paso a paso qué tenemos que hacer para que nuestros usuarios se puedan autenticar usando Facebook Connect (la nueva API de Facebook mucho más sencilla que la anterior).

El tutorial se divide en los siguientes pasos:

  • Crear la tabla MySQL para nuestra aplicación, esto lo tendremos que modificar según nuestra aplicación
  • Dar de alta la aplicación en Facebook
  • La petición de permiso
  • El registro y la autenticación
  • Extender los permisos que se solicita
  • Comprobar si se tiene permisos
  • Publicar en el muro

How to Authenticate Users With Facebook Connect

Vía / PHPDeveloper.org

PHP SDK de Open Graph de Facebook

Si el otro día comentaba la nueva API de Open Graph de Facebook, ahora encuentro una librería que nos permite trabajar de forma sencilla con esta API:

include_once 'lib/facebook.php';
include_once 'config.php';
$facebook = new Facebook(array(
  'appId'  => FACEBOOK_API_KEY,
  'secret' => FACEBOOK_SECRET_KEY,
  'cookie' => true,
  'domain' => 'phpfour.com'
));
$session = $facebook->getSession();
if (!$session) {
  $url = $facebook->getLoginUrl(array(
    'canvas' => 1,
    'fbconnect' => 0
  ));
  echo "";
} else {
  try {
    $uid = $facebook->getUser();
    $me = $facebook->api('/me');
    $updated = date("l, F j, Y", strtotime($me['updated_time']));
    echo "Hello " . $me['name'] . "
"; echo "You last updated your profile on " . $updated; } catch (FacebookApiException $e) { echo "Error:" . print_r($e, true); } }

PHP-SDK Facebook

Vía / Md Emran Hasan

API de Open Graph de Facebook

Si el otro día salía Open Graph de Facebook, ahora hay que ponerse a hacer aplicaciones para hacer uso de esta API, porque nos guste o no, Facebook nos puede aportar mucho a nuestra aplicación.

La verdad es que la API es muy sencilla: llamada http que devuelve JSON. Siendo la URL de la llamada de esta forma:

https://graph.facebook.com/ID[/CONNECTION_TYPE]

Lo bueno es que el ID puede ser cualquiera: un usuario, una página, un status, una aplicación, … Y luego se le puede añadir el tipo de conexión para obtener los amigos, los vídeos, … de un usuario.

Facebook Graph API

Enlaces rápidos (16-02-2010)

Unos cuantos enlaces rápidos, con temática centrada en NoSQL