Archive for the “Google” Category

El día 15 Google liberó la primera release de la API de Google Plus (http://developers.google.com/+/) y en las siguientes líneas comentaré como empezar a toquetearla para crear nuestra primera aplicación.

Por ser la primera versión, esta tiene una serie de limitaciones y/o particularidades, como por ejemplo que solo podremos acceder a datos públicos de cada uno de los perfiles con los que trabajemos. Otra de las particularidades es que tenemos, por cortesía de Google (…), un límite de querys (mil para Google+) diariamente.

He estado trasteando con varias librerías para los distintos lenguajes que han sacado (java, python,…) y finalmente me he quedado con la versión de python en Linux (en windows me ha dado más de un quebradero de cabeza).

¿Por qué python?, pues por el simple hecho de que en pocas líneas consigue conectar con el servidor, conseguir la autorización y obtener los datos que deseamos.

Lo primero que debemos hacer para desarrollar con el API de Google Plus es obtener nuestra API Key y los datos necesarios para trabajar con OAuth2, y esto lo hacemos con nuestra cuenta de Google en la web https://code.google.com/apis/console/b/0/. En principio la autorización no nos haría mucha falta ya que, como he dicho anteriormente, en esta primera release de la api de Google+, solo podremos acceder a datos públicos de nuestro perfil para consultarlos, pero nunca está mal saberlo para el futuro.

Recuerdo que las librerías que han sacado son todas beta (la de ruby es alpha), por lo que habrá cosas que no terminen de funcionar al 100% (en java por ejemplo hay métodos de la librería que no están implementados en la api oficial de Google). En la dirección http://developers.google.com/+/downloads podemos elegir la api y la librería del lenguaje que vayamos a usar, en este caso, yo he elegido python. En casi todos los lenguajes han puesto un primer ejemplo de como obtener la autorización, conectarse y obtener datos, y todos difieren unos de otros.

Si elegimos python y nos descargamos el ejemplo que proporciona Google, vemos que tenemso dos archivos, uno llamado plus_cli.py y otro llamado settings.py. El primero será con el que nos logueemos en Google Plus y el segundo donde guardaremos nuestros datos de la api key.

Lo primero que tendremos que hacer será modificar los datos de settings.py con aquellos de nuestra api key.

Una vez que tengamos esto, ya podemos empezar a entender el resto del código.

Lo primero con lo que nos encontramos es con la función para loguearnos y pedir la autorización a Google Plus para acceder a los datos. Se trata de la función authorize_self.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def authorize_self(client_id='None', client_secret='None'):
  if client_id is None or client_secret is None:
    raise Exception('Please register at the API Console at:
    https://code.google.com/apis/console.  See README.txt for details!')
 
  flow = OAuth2WebServerFlow(
      client_id=client_id,
      client_secret=client_secret,
      scope='https://www.googleapis.com/auth/plus.me',
      user_agent='google-api-client-python-plus-cmdline/1.0',
      xoauth_displayname='Google Plus Client Example App'
      )
 
  #Remove this file if you want to do the OAuth2 dance again!
  credentials_file = 'plus_auth.dat'
 
  storage = Storage(credentials_file)
  if os.path.exists(credentials_file):
    credentials = storage.get()
  else:
    credentials = run(flow, storage)
 
  return credentials

Esta función junto a build_service, cogerá los datos de nuestra api y nos devolverá una dirección que tendremos que pegar en nuestro navegador para así otorgar el permiso correspondiente a nuestra aplicación.

1
2
3
4
5
6
def build_service(credentials, http, api_key=None):
  if ( credentials != None ):
    http = credentials.authorize(http)
  service = apiclient.discovery.build('plus', 'v1', http=http, developerKey=api_key)
 
  return service

Uno de las funciones más importantes de las que hacemos uso es OAuth2WebServerFlow que es quien se encarga de realizar todos los pasos para que la autorización se lleve a cabo.

Una vez que hayamos obtenido la autorización, ya solo nos queda jugar con los datos que tenemos en Google Plus, y esto lo hacemos con la función main().

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
def main():
  http = httplib2.Http()
  credentials = authorize_self(settings.CLIENT_ID,settings.CLIENT_SECRET)
  service = build_service(credentials,http)
 
  person = service.people().get(userId='me').execute(http)
 
  print "Got your ID: " + person['displayName']
 
  # Now, we can continue on unauthorized
  # I could continue using my authenticated service, of course
  # but for example we'll use a second unauth'd one
  httpUnauth = httplib2.Http()
  serviceUnauth = build_service(None, httpUnauth, settings.API_KEY)
activities_doc = serviceUnauth.activities().list(userId=person['id'],collection='public').
  execute(httpUnauth)
 
  activities = []
  npt = None
 
  if 'items' in activities_doc:
    activities = activities_doc[ 'items' ]
    print "Retrieved %d activities" % len(activities_doc['items'])
 
  npt = activities_doc['nextPageToken']
 
  while ( npt != None ):
activities_doc = serviceUnauth.activities().list(userId=person['id'],collection='public').
    execute(httpUnauth)
 
    if 'items' in activities_doc:
      activities += activities_doc['items']
      print "Retrieved %d more activities" % len(activities_doc['items'])
 
    if not 'nextPageToken' in activities_doc or activities_doc['nextPageToken'] == npt:
      "---Done"
      break
 
    npt = activities_doc['nextPageToken']
 
  print "----------------\nPublic activities count:", len(activities)
  print
 
  if len(activities) > 0:
    for item in activities:
      print '  activity\t', item['object']['content'][:40], item['id']
 
    # Now, ask for the first item on the list
    top_activity = serviceUnauth.activities().get(activityId=activities[0]['id']).
    execute(httpUnauth)
 
    print '\n\ntop activity: '+top_activity['id']+': '+top_activity['object']['content']
 
  print '\n\nSUCCESS: Everything worked'

Llegados a este punto debemos diferenciar entre dos tipos de datos, los relacionados con personas (http://developers.google.com/+/api/latest/people), o con las actividades que este ha llevado a cabo en su perfil de Google+ (http://developers.google.com/+/api/latest/activities).

Como dato, tanto en uno como en otro, la información es transportada en formato JSON, acrónimo de JavaScript Object Notation.

Lo primero que tendremos que hacer es recoger los datos del usuario con el que estamos trabajando, y para ello, utilizaremos una conexión autorizada por los métodos que comenté al comienzo del post.

1
2
3
4
5
6
7
http = httplib2.Http()
  credentials = authorize_self(settings.CLIENT_ID,settings.CLIENT_SECRET)
  service = build_service(credentials,http)
 
  person = service.people().get(userId='me').execute(http)
 
  print "Got your ID: " + person['displayName']

A partir de aquí, cada vez que queramos obtener algún tipo de dato relacionado con el usuario tendremos que acceder
al mismo de la forma person[‘dato_al_que_accedemos’] siguiendo este ejemplo.

Posteriormente se accede a la lista de actividades del usuario, y para esto de utiliza una conexión no autorizada ya que los datos a los que accedemos son públicos y no se necesita de ningún tipo de autorización para su consulta.

1
2
3
4
5
httpUnauth = httplib2.Http()
  serviceUnauth = build_service(None, httpUnauth, settings.API_KEY)
 
  activities_doc = serviceUnauth.activities().list(userId=person['id'],collection='public').
  execute(httpUnauth)

En el ejemplo que nos proporciona Google, todo lo que ha recogido la variable activities_doc es guardado en un array llamado activities, por lo que para acceder a los datos de las actividades del usuario accederemos de la forma activities[‘actividad_del_usuario’].

Cada uno de los datos y/o las actividades del usuario están relacionado con una palabra clave que deberemos conocer, por ejemplo, la dirección que haya puesto el usuario tendrá la palabra clave “address” (lógico). Todas estas claves están en la web de la api y más atrás he dejado los enlaces de las claves tanto para los datos del usuario como para las actividades.

Una vez hecho esto, tan solo nos queda jugar con la api, aunque con esta primera versión poca cosa se puede hacer. Habrá que esperar a nuevas versiones para poder ahondar más en la aplicación.

Si a alguien le interesa, las pruebas las estoy realizando en Fedora con Eclipse.

PD: Algunas partes del código fuente mostrado en el post han sido acortadas para no desencuadrar el mismo.

Comments No Comments »

chrome

Hace no mucho salió el navegador de Google para Linux y para MAC en su versión BETA aun.

Para instalarlo lo único que debemos hacer es irnos a la web del proyecto y elegir la plataforma, 32 ó 64 bits, y elegir los paquetes de nuestra distribución, .rpm o .deb (el siguiente pantallazo está sacado desde Mozilla Firefox).

Pantallazo-Google Chrome - Descárgate un nuevo navegador - Mozilla Firefox

A continuación de haber instalado el navegador, nos aparecerá en la pantalla un mensaje de Chrome para enviar información acerca del uso del programa, esta elección queda a vuestra disposición.

Pantallazo-Bienvenido a Google Chrome

Y esta es la imagen de Google Chrome en Linux, en concreto en Ubuntu Karmic Koala.

Pantallazo

El uso de Google Chrome en Linux es el mismo que en Windows, la navegación se realiza igual por pestañas y podemos importar nuestros datos y preferencias de Firefox.

La utilización del flash no requiere algún problema, ya que después de la instalación podemos hacer uso, por ejemplo, de YouTUBE sin instalar ningún programa adicional (como plugins).

Pantallazo-1

La verdad es que llevo poco tiempo usándolo y no me ha dado algún problema. Recuerdo que las versiones BETA son para cazar errores y demás, y no para su uso común, por lo que lo más normal es que encontréis problemas a la hora de usar Google Chrome en Linux.

La impresión que me llevo con este software es bastante buena, y tenemos ante nosotros a una buena alternativa a Firefox en Linux. Ojo, no digo que no haya otras alternativas, solo que este post es para hablar de Google Chrome.

Comments No Comments »


Warning: file_get_contents(https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails&id=6rYozIZOgDk&key=1): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in /homepages/33/d217631465/htdocs/wordpress/wp-content/plugins/youtube-embed/includes/api-access.php on line 99

Warning: file_get_contents(https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails&id=1FJHYqE0RD&key=1): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in /homepages/33/d217631465/htdocs/wordpress/wp-content/plugins/youtube-embed/includes/api-access.php on line 99

Warning: file_get_contents(https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails&id=QBGfUs9mQYY&key=1): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in /homepages/33/d217631465/htdocs/wordpress/wp-content/plugins/youtube-embed/includes/api-access.php on line 99

Warning: file_get_contents(https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails&id=fL6gSd4ugSI&key=1): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in /homepages/33/d217631465/htdocs/wordpress/wp-content/plugins/youtube-embed/includes/api-access.php on line 99

Warning: file_get_contents(https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails&id=MPukbH6D-lY&key=1): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in /homepages/33/d217631465/htdocs/wordpress/wp-content/plugins/youtube-embed/includes/api-access.php on line 99

Warning: file_get_contents(https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails&id=I6ObTqIiYfE&key=1): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in /homepages/33/d217631465/htdocs/wordpress/wp-content/plugins/youtube-embed/includes/api-access.php on line 99

Desde hace un tiempo existe una palabra que rona mucho por la red, el GPhone.

¿Que se suponía que era esto?, un teléfono móvil que Google que al final no ha sido nada de lo hablado. Incluso andaba por ahí una supuesta foto de GPhone el cual se parecía mucho al IPhone.

El caso es que había rumores hablando de un nuevo producto de Google relacionado con el mundo de la telefonía móvil, aunque nadia sabía a ciencia cierta que era.

Al final Google ha publicado un SDK llamado Android, basado en Linux y JAVA. El objetivo final es hacer de este SO una plataforma libre que pueda ser usada en cualquier terminal (al contrario que IPhone) y que fomentará el desarrollo de aplicaciones por parte de los usuarios.

The new G-system will be based on Linux, a 15-year-old computer operating system that is available free over the Internet. Google’s version will be overlaid with Java, a popular computer language.

Fuente: USA Today

Android tiene muchos puntos que tratar, aunque primero vayamos el centro de la cuestión.

Esto no es una apuesta de Google solo, en su momento se creó una alianza de diversas empresas llamada Open Handset Alliance.

Es una lista bastante larga que podemos ver aquí, aunque hay que señalar grandes empresas, además de una ESPAÑOLA.

  • TELEFÓNICA
  • Intel
  • T-Mobile
  • NVIDIA
  • Motorola
  • etc etc etc.

Uno de los puntos a favor de este SDK será la facilidad de portar cualquier aplicación para PCs a este nuevo sistema, y en definitiva, su uso en teléfonos móviles.

Esto puede hacernos pensar, ¿puede que Android llegue a ser un SO libre para utilizarlo en nuestro PC a modo de Windows o cualquier distribución GNU/Linux?. Desconozco la potencia de este sistema el cual estoy empezando a probar, aunque desde la propia Google se anunció en su momento que uno de sus objetivos es que Android no fuera utilizado solo en móviles.

¿No son las distribuciones GNU/Linux lo suficientemente estables y potentes para que funcionen en nuestros PCs?, ¿sería capaz Android de hacerle frente?.

Puede que la supuesta facilidad para portar aplicaciones haga que no sea un SO sin familia.

Esto se responderá en un futuro cuando todo evolucione más.

Eso sí, en sistemas móviles, PDAs, GPS,…, el funcionamiento que puede desempeñar es estupendo, además de que el desarrollo de móviles y estos sistemas no se tendrían que amoldar al software de turno, si no que todos tendrían su base en un mismo SO con el consiguiente ahorro financiero.

A continuación dejo un video de los desarrolladores de Android hablando del proyecto:

Ahora vemos otro video del co-fundador de la compañía presentándonos este sistema con alguna que otra aplicación.

The YouTube ID of 1FJHYqE0RD is invalid.

Y para terminar con los videos, aquí tenemos tres donde nos explican la arquitectura.

PRIMERA PARTE

SEGUNDA PARTE

TERCERA PARTE

Y para empezar a desarrollar para este sistema necesitamos…

  • Eclipse IDE – Europa
  • Android SDK

Para descargarnos el sistema tan solo debemos ir a la siguiente web.

Descargar Android SDK

Para nuestra IDE, vamos a la web oficial de Eclipse Europa y nos descargamos la IDE.

Descargar Eclipse IDE – Europa

Una vez que tengamos Eclipse instalado, necesitamos nuestro plugin para programar para Android.

Para ello seguimos estos pasos.

Abrimos Eclipse y seguimos este camino: Help > Software Updates > Find and Install….

Seleccionamos Search for new features to install y pulsamos Next.

Presionamos New Remote Site. Agregamos la siguiente dirección:

https://dl-ssl.google.com/android/eclipse/

Finalmente pulsamos OK.

En los resultados que obtengamos hacemos click en la casilla de verificación de Android Plugin y pulsamos NEXT.

A partir de ahora lo típico de cualquier instalación, aceptar los términos del contrato y aplicar los cambios. Reiniciamos Eclipse y listo.

Una vez instalado, cogemos Android SDK que descargamos al principio, lo descomprimimos en cualquier carpeta. Recomendado, por ejemplo, que para tenerlo localizable lo hagamos en C:/ en Windows y en /opt/ en Linux.

Ahora desde Eclipse vamos a la pestaña “Window” y elegimos “Preferences”. En la lista de la izquierda elegimos “Android” y a la derecha buscamos el directorio donde hemos guardado Android SDK.

Así ya tenemos nuestra IDE y Android SDK listos para empezar.

Para más información, visita este enlace (en Inglés).

Para terminar, Google ha creado un concurso para desarrollar aplicaciones con esta heramienta. El premio son 10 Millones de $…

Más información aquí.

Y aquí os dejo un video explicativo creando una simple aplicación en Android con Eclipse.

¿Alguien se apunta a intentar conseguir los 10M$?.

Comments No Comments »

   Beat diabetes   Diabetes diet