Posts tagged: web 2.0

Trasteando la nueva Api de google+ (google plus) con PHP

By , 16/09/2011 12:37

Hoy por fin google ha sacado algo relativo a la tan esperada api para la red social de google. Google +. Por desgracia parece que se han quedado en una especie de versión demo de lo que realmente todos esperábamos. Mirando la documentación actual no me ha llevado más de 15 minutos montar un ejemplo. Para empezar debemos seguir los siguientes pasos:

  1. Acudir a https://code.google.com/apis/console donde dentremos que activar la api de google+ y generar nuestra “Api access”. Para ello tendremos que crear un nuevo “Client id for web aplications” y obteniendo Client id, Client secret, Redirect URIs y API key.
  2. Una vez tengamos todos los datos tendremos que seguir los pasos claramente descritos en esta página. En ella nos indican que tenemos que descargar la librería php  google-api-php-client y dos archivos, un PHP y una hoja de estilos.
  3. Finalmente retocamos index.php añadiendo los datos que obtuvimos de la creación de nuestra aplicación. Recordad… Client id, Client secret, Redirect URIs y API key.
  4. Lo metemos todo en nuestro sitio web y probamos.
Por lo poco que he podido mirar de la API creo que solo permite ver perfiles públicos y sus feeds. Os dejo aquí el mismo ejemplo que han propuesto desde Google.

Mi primera aplicación de Facebook

By , 11/08/2010 12:20

Tras haber estado trasteando con Twitter decidí lanzarme a investigar un poco como funcionan las aplicaciones de facebook, que aunque en teoría utiliza también Oauth tiene bastantes particularidades. En general me ha resultado mucho más complejo, hay mucha información pero aparece bastante dispersa y se centra muy poco en la práctica. Pocos ejemplos de código. Para colmo Facebook tiene su propia API, extensa y con numerosas versiones… Para empezar recomiendo leer su documentación (solo en inglés) para hacernos una idea general.

Facebook incorpora dos lenguajes propios, Facebook Markup Language (FBML) y Facebook Query Language (FQL)… En resumidas cuentas FBML son pequeños módulos que puedes reutilizar del estilo de formularios, listas, botones… con las funcionalidades típicas de facebook. Por ejemplo:

<fb:photo pid="12345" />

Mientras que FQL viene a ser una especie de SQL con el que obtener datos realizando consultas directamente a “tablas” internas de Facebook. Por ejemplo:

SELECT name FROM user WHERE uid = me()

El primer paso como siempre es registrar nuestra aplicación en Facebook, para ello deberemos unirnos al grupo de developers y desde ahí acceder a la creación de una nueva aplicación. El funcionamiento es similar a twitter, obtenemos un id de aplicación y un par de claves para nuestra aplicación. a partir de aquí nos toca partirnos los cuernos empezando por tener un dominio propio en el cual subiremos todos los archivos de nuestra aplicación (No he visto que facebook ofrezca espacio dedicado).

A nivel de programación aunque aparentemente es bastante simple la documentación es mínima y los ejemplos son pocos y en muchos casos desfasados (versiones anteriores de la API), dado que mi intención no era hacer una aplicación seria por ahora me he limitado a tratar de hacer una aplicación que obtenga permisos de escritura en el muro, permita dejar comentarios y permita invitar a los amigos. Para ello me decanté por un framework casero (Gracias a Alvaroveliz, un poco de info en su blog), al que comencé añadiendo los datos de mi aplicación (/config/facebook.php).

$fb_apikey        = '****************************'; // API KEY
$fb_secret        = '****************************'; // Secret Key
$app_callbackurl  = 'http://********/moo/'; // APP Canvas URL
$canvas_url       = 'http://apps.facebook.com/dothemoo/'; // Canvas URL

Posteriormente cree varias vistas para generar un conjunto de “tabs” o pestañas con los 3 apartados que necesitaba, un index, otro para comentarios, un tercero para invitar amigos y uno oculto para lanzar el evento de escritura en el muro. Os pongo algunos fragmentos de código:

<fb:tabs>
  <fb:tab-item href='http://apps.facebook.com/dothemoo/index.php' title='Inicio' selected='true'/>
  <fb:tab-item href='http://apps.facebook.com/dothemoo/index.php?section=comments' title='Comentarios' />
  <fb:tab-item href='http://apps.facebook.com/dothemoo/index.php?section=invite' title='Invitar' />
 </fb:tabs>
$friends = $facebook->api_client->fql_query('SELECT uid FROM user WHERE is_app_user = 1 AND uid IN (SELECT uid2 FROM friend WHERE uid1 = '.$user.')');
	$excludedFriends = array();
	if (is_array($friends) && count($friends) > 0)
	{
	  foreach($friends as $friend){
	    $excludedFriends[] = $friend['uid'];
	  }
	}
	$excludedFriends = implode(',', $excludedFriends);
}
$contentBox = "<fb:name uid=\"$user\" firstnameonly=\"true\" /> quiere que uses la aplicación do the Moo <fb:req-choice url=\"http://apps.facebook.com/dothemoo\" label=\"Confirmar\" />";
?>

<fb:request-form type="Do the Moo" action="index.php?section=invite" content="<?= htmlentities($contentBox,ENT_COMPAT,'UTF-8'); ?>" method="post">
<fb:multi-friend-selector actiontext="Invita a tus amigos para que usen nuestra primera aplicación" showborder="true" exclude_ids="<? echo $excludedFriends; ?>" />
$facebook->api_client->stream_publish($message, $attachment, $action_links);

Resumiendo. Mucha dificultad para tan poca cosa que pretendía, pero si que es cierto que una vez que sacas lo básico se convierte en algo muy potente por las posibilidades que da el acceder a millones de usuarios con relativo poco esfuerzo.

Por cierto… Mi aplicación “chorra” escribe en el muro del usuario un numero de “mugidos” aleatorios, podéis acceder a ella desde aquí. El algoritmo de generar mugidos aleatorios lo he patentado :P .

Mi primera aplicación Twitter

By , 09/08/2010 13:32

Twitter es una red de información de tiempo real motorizada por gente alrededor del mundo que permite compartir y descubrir lo que está pasando en este momento. Twitter pregunta “Qué pasa?” y hace que la respuesta se propague a través del mundo a millones, inmediatamente. Esto dice Twitter… en resumen no es más que un sitio en el que cada usuario puede escribir algo y esperar que sus seguidores puedan leerlo.

Oauth es un protocolo abierto que mediante una API con sistema simple y estándar nos otorga una autorización segura para tratar con datos protegidos. El esquema de funcionamiento de una aplicación con Oauth puede verse facilmente resumido en esta imagen.

El primer paso para poder crear cualquier tipo de aplicación que implemente Oauth es entender claramente su funcionamiento, básicamente consiste en una aplicación que pide al usuario autorización para acceder a ciertos datos privados de alguna de sus aplicaciones en internet, el usuario acepta dicha petición logándose en la red (Twitter, facebook, Picasa, flickr …). Desde entonces nuestra aplicación obtiene un Token mediante el cual podremos acceder de nuevo a dichos datos privados sin la necesidad de que el usuario deba volver a permitirnos el acceso. Un ejemplo muy claro: “Eduardo tiene las fotos de su último viaje subidas a Facebook, entra en contacto con la web www.Imprimetodaslasfotos.com en la que quiere ordenar la impresión de sus últimas fotos de las vacaciones, mediante un sencillo proceso (Oauth) da acceso a www.Imprimetodaslasfotos.com a sus fotografías en Facebook. Pasados unos minutos Imprimetodaslasfotos.com accede a las fotos de Eduardo en facebook, las imprime y se las manda por mensajería a Eduardo”

Registrar una aplicación en Twiter es muy sencillo, accederemos a http://twitter.com/oauth_clients/ , donde deberemos dar todos los datos necesarios para registrar nuestra aplicación. Obtendremos nuestros datos privados necesarios para la aplicación (Consumer Key y Consumer Secret). Deberíamos descargar los archivos necesarios de la API de Twitter, en mi caso he decidido decantarme por esta Clase de PHP de la que podemos obtener más información en este blog, también podemos mirar un poco la documentación de Twitter.

Tras hacer unos leves cambios en la clase de PHP, insertar los datos de mi aplicación y subirlas a mi propio dominio he realizado mi primera aplicación de Twitter, simple pero muy instructiva. Publica en el Twitter del usuario una tirada aleatoria de un dado de 100 caras (1-100). (Mi pasado rolero me puede jeje)

Y aquí mi aplicación: http://www.ikito.net/d100/

Actualización… Fracaso absoluto. El proyecto que tenía la clase PHP ha muerto y el blog que daba información ha muerto igualmente.
Pongo aquí un  zip con TODO el código de mi aplicación. Espero que sea de alguna utilidad.

Seguimos quemando bibliotecas

By , 01/12/2009 13:34

Al hilo del reciente estreno del film Agora que trata sobre la destrucción de la biblioteca de Alejandría,  o Antigua Biblioteca de Alejandría de la que se dice fue en su época la más grande del mundo, me vino hace unos días una reflexión a la cabeza.

Incluso a día de hoy asistimos impasivos a acontecimientos muy similares a diario en el reciente mundo virtual de internet, la destrucción de la biblioteca de Alejandría, supuso le pérdida seguramente de importantes estudios, textos, volúmenes, datos científicos que dado nuestro incompleto conocimiento de estas eras antiguas hubieran supuesto un campo extenso y florido de estudio que nos hubiera permitido ampliar nuestros conocimientos sobre dicha época… Pero … ¿Realmente todo este contenido hubiera aportado algo?… Dudo mucho que el 100% de todos estos documentos resultasen interesantes o útiles para la comunidad pero… Acaso no es el conjunto de estos documentos lo que nos permitiría hacernos una idea de su forma de vida, sus pensamientos, su filosofía, su literatura… Y podriamos hacernos una idea mucho más real del contexto de la época gracias a muchos escritos probablemente poco “intereantes”.

Seguimos quemando bibliotecas. Hace poco quemaron Geocities, para muchos el primer sitio de hosting en aquellos primero años de expansión de internet. Para mi el sitio con el que tuve mis primeros contactos con HTML y gifs animados, donde hice mi primera página personal… De fondo negro, textos amarillos y montones de muñequitos de obras desplazándose por la pantalla. Nada importante, pero información al fin y al cabo. ¿Acaso no era el conjunto de todo Geocities una gran biblioteca? Repleta de datos, historias, literatura, pensamientos. Evidentemente no el 100% era de interés público pero acaso no es la visión global de una época completa suspendida en una NUBE que por desgracia en su mayoría ha desaparecido. Pensemos en que algunos de los autores han tenido opción a recuperar la información que aun tenían en los servidores de Geocities, los que aun tenían acceso, los que han sido informados del cierre, los que de una forma u otra han podido acceder a sus textos. ¿Pero que hay de todos aquellos que no han podido recuperar dicha información? ¿Que hay de todos aquellos que han fallecido? Acaso no podemos pensar que entre toda esa maraña de datos podría existir contenidos de gran valor literario o científico, quizás hemos perdido todos los pensamientos de un filósofo desconocido, o las bases de alguna teoría matemática o física revolucionaria.

Los defensores a ultranza de la WEB 2.0, los defensores de la información colgada en la Red, esos que seguramente tras ver la película de Agora han lamentado por unos segundos la maldad de los bastardos que guiados por creencias radicales quemaron una de los mayores centros de sabiduría del mundo antigüo deberían pensar que Yahoo guiado por los pocos beneficios que les reportaba ha eliminado de un plumazo parte de la historia de nuestra civilización contenida en forma de datos, relatos, poesías, opiniones, imágenes, videos, ilustraciones… Han quemado una gran biblioteca, quizás un 90% de su contenido podría parecer insustancial, superficial o carente de interés, quizás solamente un 10% contenía información útil… Quizás … Pero nadie puede asegurar que entre ese 10% no hubiera alguna genialidad oculta en la gran nube de información. Cuando nuestros nietos dentro de 50 o 70 años tengan que buscar información acerca de los inicios del anticuado lenguaje HTML, de los primero blogs o páginas personales,  de las curiosas imagenes animadas de obras, de fotos de los 80… Nuestros nietos pensarán… Abuelo, ¿Como permitieron que cientos de miles de páginas de información desaparecieran de un día para otro?.

Y hasta que no se encuentre una solución a esto, grandes multinacionales tienen en su poder cada vez más y más información. Y lo que es peor… Todo el derecho a eliminarlas sin nuestro consentieminto. Por ello cada día estoy más convencido de que la maravillosa nube, el maravilloso mundo 2.0 de acceso global a la información no es más que una patraña. Cuando Google decida que Blogspot no es rentable quemarán Blogspot, Cuando Facebook no vea negocio eliminaran millones de fotografías y nada podremos hacer salvo rescatar los contenidos a los que tengamos acceso.

Siguiendo esta línea de pensamiento desde hace bastante tiempo cada vez que veo algo que me interesa o me gusta (video, foto o documento) me lo descargo y almaceno en my propia biblioteca. Esa biblioteca es mía y la quemo cuando quiero.

Panorama Theme by Themocracy