Category: Programación

Publicar en twitter desde e-mail

By , 25/11/2011 10:47

No me preguntéis los motivos, pero llevaba un tiempo pensando en buscar alguna aplicación que permitiera publicar en twitter mandando un e-mail a una dirección de correo electrónico. Encontré más de un servicio pero en su mayoría habían desaparecido o el funcionamiento no era exactamente lo que yo esperaba. El proceso es simple, necesitamos:

  1. Hosting propio. Con cuenta de e-mail y opciones de Cron (optativo).
  2. Cuenta en twitter como developer. (Para crear una App).
  3. PHP en nuestro hosting (1 solo archivo + librería Oauth).
  • Comenzaremos creando una cuenta de correo. Por ejemplo: publicatwitter@hosting.com.
  • Un directorio con un archivo PHP en nuestro hosting. Por ejemplo:  /mail2tweet/publica.php.
  • Creamos una aplicación en twitter en la que indicaremos la url completa al archivo PHP, indicaremos que es una aplicación de lectura y escritura (READ/WRITE) y obtendremos los datos: Consumer_key, Consumer_secret, Access_token y Access_token_secret, estos últimos hay que generarlos desde una de las opciones de configuración de la aplicación. Utilizaremos la librería tOAuth.class.php la podeís encontrar aquí.
  • Ahora vamos con el php. Podéis descargar el ejemplo aquí
  • Finalmente si tenemos opción a Cron en nuestro hosting programamos una tarea sobre este archivo PHP cada hora por ejemplo. Si no tenemos Cron sería suficiente con visitar la URL anterior para ejecutar todo el proceso.
Hay un par de detalles que debo comentar. El primero es que para poder identificar claramente los correos que deben ser publicados en twitter en el archivo PHP incluimos una clave para que solo nosotros podamos publicar cosas en nuestro twitter… ¿No queremos spam de viagra verdad?. Lo segundo… No me he querido complicar demasiado con la gestión de IMAP y las partes del correo por lo que he introducido en el texto de los correos unas cadenas de inicio y de fin de mensaje para poder identificarlo facilmente. Un ejemplo de envío sería:
To: publicatwitter@hosting.com
Subject: clavesupersecreta
texto: ***Publica esto***
Ni que decir tiene que no he querido profundizar más en el tema, funciona, que es lo que yo quería. Espero que esto pueda serviros como base a cosas mayores ya que creo ofrece muchas posibilidades.

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.

Error en twitter “Read-only application cannot POST”

By , 13/09/2011 09:59

Trabajando con aplicaciones de Twitter me encontré con este error al tratar de publicar algo en twitter desde mi aplicación:

Array
(
[error] => Read-only application cannot POST
[request] => /statuses/update.json
)

Error en escribe_tweet: Read-only application cannot POST

Puedes pasar horas cambiando cosas y no vas a conseguir nada, la solución es tan sencilla como cambiar desde las settings de la aplicación la propiedad application type de “read only” a “read and write”. Si, tontaco que es uno.

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/

Instalar LAMP En Ubuntu Lucid Lynx 10.04

By , 11/06/2010 12:22

Con esto instalamos en Linux Apache Mysql y Php (LAMP), un paquete todo en uno.
Es muy sencillo, solo es necesario:

egarcia@egarcia:~$sudo apt-get install lamp-server^

Con esta línea (importante el carácter ^ al final) instala todos los paquetes necesarios.

Go. el lenguaje de programación de Google

By , 12/11/2009 10:28

Go es el nuevo lenguaje de programación que viene de la mano de Google, el Dios Google, al que pronto deberemos adorar y temer. Se trata de un lenguaje,  según comentan, con la potencia de C la velocidad de Phyton y sobre todo… OPENSOURCE, algo muy a tener en cuenta sobre todo teniendo detrás el nombre de GOOGLE.

Yo mientras escribo esto estoy instalándolo todas las herramientas necesarias para empezar a trastearlo un poco, he seguido el siguiente How to de Mundogeek para Ubuntu y también he mirado en la página de Go, http://golang.org/ .

Una vez instalado todo lo necesario podemos proceder a realizar nuestra primera prueba, el mítico “Hola Mundo”.

egarcia@egarcia:~$ sudo gedit hola.go
package main
import "fmt"
func main() {
fmt.Printf("Hola mundo\n");
}
egarcia@egarcia:~$ 8g hola.go
egarcia@egarcia:~$ 8l hola.8
egarcia@egarcia:~$ ./8.out
Hola mundo
egarcia@egarcia:~$

Y acabo de hacer mi primer Hola mundo en Go :) .

Panorama Theme by Themocracy