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:
El UTF-8 es un tipo de codificación de caracteres para Unicode que nos permite escribir nuestras páginas web y no preocuparnos por si se va a ver correctamente o van a aparecer caracteres extraños.
Las veces que he trabajado en proyectos multilenguaje es lo que hemos usado, salvo en el caso de japonés y coreano que es preferible usar el UTF-16 porque ocupa menos espacio. Eso ha hecho que me haya acostumbrado a realizar siempre los proyectos en UTF-8 y así evitar luego los problemas que puedan surgir en futuras actualizaciones o en testeos y tener luego que cambiar todo el proyecto a UTF-8.
Leer feeds no es algo que se deba limitar a aplicaciones lectoras de feeds, ya que actualmente muchas webs ofrecen sus datos mediante este formato. Hacer un lector de feeds puede ser algo complicado, o más bien laborioso, ya que hay varios formatos y versiones, a parte de que no todo el mundo publica feeds válidados.
Se puede realizar un sencillo lector de feeds con PHP gracias a la librería SimpleXML (se necesita PHP5). Tan solo habrá que leer el feed y parsearlo, y luego acceder a sus elementos. Algo así como:
$data = @simplexml_load_string(file_get_contents($url));
if ($data) {
// Obtiene el los elementos <item>
$items = $data->xpath('//item');
}
Pero hay que tener en cuenta que el existen etiquetas como <content:encoded> que la librería no las leerá y recuperará tan fácilmente. Para ello deberemos mirar el xmlns correspondiente:
Con este código se puede empezar a leer feeds, pero aún así, si necesitáis más, podéis mirar este post, que es donde he encontrado la solución al <content:encoded>.
Para mí, uno de los mayores fracasos de Twitter es su API, una limitación de su uso increíble para algo que le podría dar mucho juego a la aplicación. Ahora mismo no sé en cuánto está el límite, pero la posibilidad de realizar una aplicación basada en Twitter es una pesadilla.
Para aquellos que no quieran sufrir lo que hemos sufrido con TwitterPoster (los espacios en blanco es porque la gente actualiza su imagen y no podemos recuperar la de todos los usuarios por el límite en el API de Twitter), les recomiendo usar Twitter mediante CURL.
Os paso un script sencillito que he realizado:
<?php
// Primer hacemos login
$url ="https://twitter.com/sessions";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
// Por si tienen limitación por navegador
curl_setopt($ch, curlOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)");
// Poned una ruta para las cookies
curl_setopt ($ch, CURLOPT_COOKIEJAR, '/temp/');
curl_setopt ($ch, CURLOPT_COOKIEFILE, '/temp/');
curl_setopt ($ch, CURLOPT_POSTFIELDS, "username_or_email=[usuario]&password=[contraseña]");
// Para que funcione el https
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, curlOPT_SSL_VERIFYHOST, 2);
curl_exec ($ch);
// Cargamos el home, porque Twitter añade dos campos ocultos para poder publicar por web
$url ="http://twitter.com/home";
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec ($ch);
// Recuperamos los campos ocultos
preg_match('//', $result, $match);
$authenticity_token = $match[1];
preg_match('//', $result, $match);
$siv = $match[1];
// Insertamos el texto
$res = $url ="http://twitter.com/status/update";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'siv='.$siv.'&authenticity_token='.$auth.'&status=[texto]');
curl_exec ($ch);
curl_close ($ch);
unset($ch);
?>
¿Qué fallo tiene este script? pues que si cambian el HTML (campos de formulario, …) o las URLs deja de funcionar, pero al menos no tenemos limitaciones. Eso sí, es más costoso para sus servidores y para los nuestros, porque en vez de hacer una llamada, hacemos 3, y en nuestro caso, a parte parseamos una página para obtener dos campos ocultos.
Excelente…
Si más personas supieran lo complicado que es ese navegador (IE), pero desgrciadamente tienes mucha razón, aun hay mucha gente que no saben que existen otras mejores opciones.
Personalmente, recomendamos FIREFOX o Chrome.
Obviamente toca lidiar con IE, asà que más vale hacerlo con buena actitud e intentar no enfadarse. Buen aporte, StackOverflow está lleno de perlas de estas.
Ja ja ja. Me encantó cómo finalizaste el artÃculo. Saludos.
Excelente…
Si más personas supieran lo complicado que es ese navegador (IE), pero desgrciadamente tienes mucha razón, aun hay mucha gente que no saben que existen otras mejores opciones.
Personalmente, recomendamos FIREFOX o Chrome.
Obviamente toca lidiar con IE, asà que más vale hacerlo con buena actitud e intentar no enfadarse. Buen aporte, StackOverflow está lleno de perlas de estas.
Ja ja ja. Me encantó cómo finalizaste el artÃculo. Saludos.