viernes, 13 de abril de 2012

App Inventor y Fusion Tables:Desventuras - Parte 1ª

Pues si gran dilema. Como muchos sabréis App Inventor nos provee de un Componente para poder acceder a tablas Fusion de Google. Así que sin más me decidí a a utilizarlo con mi App F1Show 2012. Las utilizo para actualizar los datos de las carreras y clasificaciones del programa y tan feliz...

Así que una vez implementados me decido a probarlos ..y genial con mi wifi iban de perlas. El problema surgió cuando empecé a probar las actualizaciones en dispositivos con conexión a Internet a través de paquetes de datos 3G. Casi ninguno se actualizaba. El dialogo de Fusion Tables se quedaba colgado y sin una respuesta! Empecé a leer un poco y enseguida me di cuenta que la mayoría de los operadores capan puertos en las conexiones 3G con lo que la recepción de información a través de este componente era inservible.

Y ahora que. Pues sin perder tiempo me dedique a investigar en la API de Google para autenticación de aplicaciones a través de ClientLogin e incorporé este método usando los componentes WEB que nos proporciona App Inventor.

Que demonios es el acceso a través de ClientLogin. Aquí os pongo un gráfico que intentaré explicar. La Autorización con ClientLogin implica una secuencia de interacciones entre tres entidades: las  aplicaciones,  los servicios de Google, y el usuario. Este diagrama ilustra la secuencia:



El proceso de autorización ClientLogin





  1. Cuando la aplicación de terceros tiene que acceder al servicio de un usuario de Google, recupera el nombre del usuario y la contraseña de inicio de sesión.
  2. La aplicación de terceros a continuación, realiza una llamada al servicio de  autorización de ClientLogin  de Google.
  3. Si el servicio de autorización de Google decide poner un impedimento (veto) adicional, devuelve respuesta de fallo con un token CAPTCHA , en forma de una dirección URL para una imagen CAPTCHA.
  4. Si se recibe el token CAPTCHA  la aplicación de terceros muestra la imagen CAPTCHA a el usuario y solicita una respuesta por parte de este.
  5. El usuario envía una respuesta al desafío CAPTCHA.
  6. La aplicación hace una nueva llamada ClientLogin, esta vez incluyendo la respuesta CAPTCHA .
  7. En una conexión con éxito (con o sin desafío CAPTCHA), el servicio de autorización de Google devuelve un token Auth a la aplicación.
  8. la aplicación entonces ejecuta una solicitud de acceso a los datos, haciendo referencia al token Auth  recibido desde el servicio de autorizaciones de Google.
  9. Si el servicio  de autorizaciones Google reconoce la contraseña, proporciona el acceso a los datos solicitados.
Vale. Y ahora como llevamos todo esto a App Inventor. Pues sencillo. Lo veremos en la Parte 2 de este artículo. Os enseñaré como hacerlo y que funcione....


1 comentario:

  1. Hola a mi me pasa lo mismo ya que paso el paquete de instalacion al Telefono con Android ejecuto los table fusion y se queda colgado. :( muy diferente a cuando usas el emulador.
    Vi tu Sample con los Web components y te Felicito me parece super bueno. Solo que no me funciona cuando quiero hacer INSERT, UPDATE, IMPORT etc ya que me dice que es necesario usar un metodo POST y el metodo GET es solo para consultar. Tu como hacer para hacer INSERCCIONES de Datos?

    ResponderEliminar