Acceder a los contactos con la API de Gmail Contacts

Hace poco en nvivo.es asignaron la tarea de modificar el tema de invitar a tus contactos, en concreto tenemos que dejar de usar una clase que hace web scraping para loguearse y obtener los contactos de windows live, gmail y yahoo.

Las razones:

  1. Lo malo de hacer web scraping es que si uno de estos servicios cambia un poco la estructura del HTML te jode el script.
  2. gmail, yahoo y hace poco windows live ofrecen una APIs para obtener la lista de contactos, con lo que tienes la garantia de que va a funcionar y que hay documentación.
  3. Dar seguridad al usuario, introducir el usuario y el password en una página da mal rollo, si usamos la APIs redirigimos al usuario a la web del servicio para que dé su aprobación.

Ayer publiqué la manera de acceder a los contactos con la API de windows live y llegué a la conclusión de que microsoft no sabe hacer APIs realmente fue complicado, tuvimos que instalar cosas en el servidor, luego el SDK no estaba todo lo necesario y demás historias que me tuve que apañar buscando en google.

Hoy he estado experimentando con la API de Gmail Contacts y ha sido todo lo contrario a la experiencia de ayer, dejo de enrollarme les dejo el script:

Requisitos:

  1. php5 y simpleXML
  2. curl

Instalación:

  1. Descargar el script
  2. Descomprimir el fichero GMAIL.zip
  3. Abrir config.php y editar la variable $return_url
  4. Subir la carpeta GMAIL al servidor

Ejecutar el script:

  1. Abrir desde el navegador el fichero:

    http://tudominio.com/GMAIL/index.php

  2. Pinchar en dar permisos gmail.
  3. Concedes el acceso en la página de google accounts.
  4. A continuación se mostrarán por pantalla la lista de contactos, esto se imprime en la linea 36 del fichero index.php.

Notas:

  1. Si no defines el parametro max-results sólo se van a cargar 25 contactos.
  2. Al pulsar F5 el token caduca, tienes que volver a pulsar de nuevo el enlace “dar permisos gmail”.
  3. De momento la API solo ofrece ordenar por “lastmodified” (último modificado), aquí tenéis la documentación con todos los parametros para filtrar y ordenar los resultados.
  4. Al obtener los contactos es posible que en la lista salga el email del usuario que se loguea, si es que vas a hacer un script para enviar invitaciones asegurate de descatarlo.
  5. Para ocultar la alerta de “Este sitio web no está registrado en Google para establecer una conexión segura para solicitudes de autorización.”, tienes que registar y validar tu sitio, más información sobre como registar tu dominio.
PHP      3 Febrero, 2009      2968 lecturas      6 comentarios

  1. sysmaya

    Excelente script, excelente script, excelente script.


    6 horas buscando en el code.google y caido se metia en una redireccion eterna y nada.


    y ya despues de que amanece, (la ultima busqueda.. no mas) y mire lo que encuentro. solo le falto el api de yahoo.


    gracias



  2. richard

    la verdad que es un exelente post y un excelente scrip el que das, gracias por el aporte



  3. xorreta

    Hola y muchas gracias por el post y el script.


    Tengo una duda. Para acceder a los demás campos de los contactos (teléfono, notas, dirección …) como lo hago. ¿Sabes donde encontrar la lista de parámetros?


    Me refiero a algo así:


    ‘phone’ => (string)$defaults->mobile->attributes()->phoneNumber,


    Gracias



  4. Yises

    Muy buen post, era justo lo que necesitaba para la aplicación que estoy desarrollando



  5. Eduardo Cortes

    Muy buen post, me sirvió muchísimo. Lo mejoré un poco para traer toda la información asociada a cada contacto, y también que quité unos warnings que estaban saliendo. Lamentablemente no hay un opción para subir el archivo. Escríbanme a edwardnumberone@gmail.com para compartírselos.


    Saludos a todos desde Bogotá, Colombia.



  6. Gustavo

    hola es un post super útil. Lo probe como tu enseñas y solo devuelve texto en japones o chino.









Additional comments powered by BackType