Tag Archives: Google

Iniciando sesión con Google+ y OAuth

Un escenario común es iniciar una sesión mediante una cuenta externa como Google+, Twitter o Facebook.
En este código mostraré como hacerlo con Google+ API

Primero necesitas registrar el API en https://code.google.com/apis/console/, registrar el servicio de Google+ API y crear una nueva aplicación, en el campo de “Redirect URI” necesitas escribir la ruta del script y lo siguiente: “googleplus.php?op=redirect“, comentaré el porqué después; después que veas el código podrás separarlo en rutas o scripts más elegantes.

En la aplicación generada, necesitarás los campos de Redirection URI y Client ID

Google OAuth funciona de la siguiente manera:

  1. Generar una URL usando los parámetros de los servicios que quieres acceder (scope) y tu Client ID y Redirection URI
  2. Necesitas redireccionar al usuario a esta URL
  3. Después que el usuario ha ingresado, el sistema te redireccionará a la URL que proporcionaste con parametros hash (googleplus.php?op=redirect#access_token=....), así que no verás esto en el servidor; puedes pasarlo a tu servidor mediante AJAX o en este caso mediante una petición GET

En el código el parámetro “?op=redirect” mostrará una página blanca con un código en javascript para convertir el hash en una petición GET; esto pemitirá obtener en el servidor el parámetro access_token que usarás para verificar mediante Google+ si es válido.

Esta parte del código lo hace:

<?php
        $access_token = $_GET['access_token'];

	//verificar si es real
	$data = @file_get_contents("https://www.googleapis.com/plus/v1/people/me?access_token={$access_token}");
	if ($data) {
		print $data;
	} else {
		print "Token no valido!";
	}

El código no está preparado para manejar errores (lo mostrará como un parámetro $_GET['error']) así que necesitas manejar eso en tu caso.

Ligas:

Usando el Google Autosuggest API

Aunque no he encontrado documentación, viendo como Youtube solicita datos de sugerencia me he dado cuenta que existe un pequeño api de sugerencias google, la liga es:

http://suggestqueries.google.com/complete/search?q=lorem

Si entran a la anterior dirección verán que les sirve un documento javascript con una llamada a una función (window.google.ac.h)

El documento regresa un arreglo con tres valores, el primero es la busqueda misma, el segundo es un arreglo de etiquetas y el tercero es un arreglo con la información del número de resultados. Este formato puede cambiar dependiendo de los parámetros enviados.

Hasta donde he probado tiene las siguientes opciones (pronto liberarán las especificaciones oficiales):

  • nolabels, valores posibles: t, f
    Especifica si deben mostrarse el numero de resultados [f] o solamente las etiquetas [t]
  • hl, valores posibles: cualquier valor válido ISO para lenguajes por ejemplo en, es, etc
    El lenguaje en el que se realizará la búsqueda por defecto está en ingles, se puede cambiar a español con hl=es
  • json, valores posibles: t
    Especifica si el resultado será en formato JSON (para ser leido por javascript), cambia un poco el formato ya que no llama la función y no es un arreglo doble como por defecto
  • xml, valores posibles: t
    Especifica si el resultado será en formato XML (muy bueno para PHP, flash o Flex), tiene una información un poco más “limpia” pero por supuesto contiene es más grande el envio de este archivo
  • jsonp, valor posible: nombre de función en javascript
    Con este parámetro podemos decirle que mande a llamar a una función de nuestro código por ejemplo: “resultados”

Pueden ver un ejemplo donde proceso los resultados de google suggest en la siguiente página:

Ejemplo de Google Autosuggest API

http://demo.livesourcing.com/blog_vida/articulos/DanguerArticle_GoogleAutosuggest/

Pueden descargar el código en:
http://demo.livesourcing.com/blog_vida/articulos/DanguerArticle_GoogleAutosuggest.tar.gz

Probando Google Chrome

Mi amiga Wendy me paso la liga de Google Chrome (que por cierto era el mismo archivo que había descargado de otra página de google… pero simplemente no funcionó) y pude probarlo un rato.

Debo decir que si bien no se siente muy “rápido” ni liviano como podría pensar, me encantó que tiene una interfaz muy limpia y minimalista. A pesar de que posiblemente la diferencia de tamaño entre mozilla y Google Chrome será de unos 100-150 pixeles, Google Chrome se ve enorme y parece que tienes una pantalla más grande para visualizar más datos.

El motor de render que es Apple Webkit por supuesto tiene un muy buen manejo debido a que las letras son un poco más claras que a comparación de mozilla.

El desempeño de páginas en javascript al menos lo poco que pude probar no era diferente de otros navegadores; pero si pude comprobar una de sus características que si le da distinción: El navegador no se cuelga si hay un script en una pestaña que se cuelgue.

Lamentablemente la ejecución de scripts en los navegadores “tradicionales” utilizan el espacio del navegador por lo que un script mal hecho puede detener al menos momentaneamente todo el navegador y las pestañas. Esto no pasa con Google Chrome, lo cual es muy interesante. SI quieren hacer la prueba pueden acceder a esta liga:

http://vida.danguer.com/archivos/google-chrome/pruebas/hang.html

Si ejecutan la prueba desde otros navegadores, verán que por algún tiempo el navegador se detendrá debido a que el script tiene un ciclo infinito; si lo ejecutan en Google Chrome la pestaña se colgará y dejará de responder pero las demas ventanas seguirán funcionando correctamente.

Intenté hacer otra prueba con la memoria, pero no obtuve resultados diferentes en cuestión de reutilización de memoria (excepto por supuesto que Google Chrome libera inmediatamente la memoria, mientras que los otros navegadores han reservado la memoria y la “liberan” reutilizándola cuando otro script la necesite). Voy a hacer unas pruebas que me encontré en la red para probar algunos problemas que normalmente tienen códigos en javascript para ver como se desempeña Google Chrome.

Del lado del desarollo, tiene una parte que es un visualizador del DOM de HTML que permite resaltar las partes del documento así como un rudimentario depurador de Javascript. En esta parte Google Chrome está en un nivel muy básico y si logran algo como Firebug de Mozilla será un gran competidor para desarrollar y probar aplicaciones web.

Por último el Manejador de Tareas es interesante y geek =), pero tiene algo de utilidad para estar viendo sobre todo la cantidad de recursos que está utilizando un script sin checar directamente al sistema operativo.

Pueden descargarlo de aqui: http://www.google.com/chrome/index.html?hl=es-419&brand=CHMG&utm_source=es-419-hpp&utm_medium=hpp&utm_campaign=es-419

O simplemente entren a www.google.com y ahi verán la liga =).

Actualización: Si le dan click directamente a la liga, al parecer forma parte del proceso por lo que necesitan copiar y pegar porque si no les traba la página del blog que la lanzó… ¿bug o característica?

Google Chrome, el navegador de Google

Google Chrome LogoGoogle anunció que hoy liberaría su navegador llamado Google Chrome, utiliza partes de Webkit (Apple) y Mozilla.

La información de lo que será el navegador se muestra a través de un comic:
http://www.google.com/googlebooks/chrome/index.html

Básicamente prometen varias cosas entre ellos una mayor rapidez de descarga, “multi-tarea” no solamente por navegador sino por pestaña/ventana.

Realmente lo interesante y tendremos que ver si es cierto es que tendrá un manejo de pestañas/ventanas como si fueran procesos de un sistema operativo; de esta manera no compartirán el espacio de memoria, por lo que si una pestaña falla; solamente esa pestaña fallará ya que las demás funcionarán adecuadamente (eso sería genial sobretodo cuando estoy depurando aplicaciones en Flex) por tanto también los popups (ventanas emergentes) solamente se mostrarán en la pestaña correspondiente y no los verás si estás en otra ventana. También se presume tendrá un manejador de tareas para ver que pestaña se está comiendo los recursos del navegador =)

Prometen que la ejecución de javascript será mejor porque utilizarán un recolector de memoria incremental que permitirá liberar memoria más rápido

Captura del Google Chrome

En unas horas debería estar disponible el link para la descarga del beta, así que esperaré al anuncio oficial para probarlo =)