Cross Domain Support para Yahoo Pipes y Google Spreadsheets desde aplicación en Flex

09 Dec 2010


Antes que nada debo decir que no soy ningún experto en AS3, Flex, Flash o cualquier tecnología de desarrollo parecida, soy más al estilo de HTML+JavaScript. En realidad estoy aprendiendo, pero este post es simplemente para tener una referencia en el futuro (y quizás le ayude a alguien, en algún momento). El problema El problema es que estaba desarrollando una aplicación en Flex, que leería información de Google Spreadsheets (utilizándolo como un data provider) y utilizaría esta data para jugar dentro de Yahoo Pipes.

Yahoo Pipes es un servicio de Yahoo buenísimo. Recién comencé a jugar con él. La idea principal es hacer mashups de contenidos y servicios en la web, así podemos hacer que una hoja de Google Spreadsheets pueda leer una lista de stocks y luego iterar entre ella para descargar data interesante desde Yahoo Finance, por ejemplo. El problema es que tanto Google Spreadsheets como Yahoo Pipes tienen bloqueado el acceso externo a su dominio, gracias a sus respectivos archivos de crossdomain, que es un archivo que permite que podamos compartir información con otros dominios [Más información acá]. Esto nos prohibe que podamos acceder tanto al Yahoo Pipe como al Google Spreadsheet desde un dominio diferente. Solucionando en Google Spreadsheet La solución que funcionó más fácil fue, luego de publicar nuestra hoja como un CSV, hacer un pequeño proxy utilizando PHP sencillo. Esto lo que hace es que nuestro script abra el documento/fichero externo (en Yahoo o Google) y lo despliegue, haciendo parecer todo “local”, cuando no es así. [Código de ejemplo del Proxy PHP] Solucionando Yahoo Pipes Aunque es posible hacerlo de la misma manera, descubrí una manera aún más sencilla de hacerlo funcionar en Yahoo Pipes. Un Yahoo Pipe, que devuelva una respuesta en RSS tiene un URL parecido a este: http://pipes.yahoo.com/pipes/pipe.run?_id=[pipe_id]b&_render=rss El truco es cambiar el dominio principal de “yahoo” a “yahooapis”: http://pipes.yahooapis.com/pipes/pipe.run?_id=[pipe_id]b&_render=rss En este dominio si tiene desbloqueado el acceso externo, por lo que nuestra data es accesible desde nuestro dominio.


Demóstenes García G.

Ingeniero Electrónico con experiencia en Ingeniería y Desarrollo de Software. Agilista, interesado en Analítica y Ciencia de Datos. Co-fundador en Pixmat, CIO en IFARHU. Twitter.