Preguntas frecuentes

    Descripción general

  1. ¿Qué es una API de datos de Google?
  2. Tengo una solicitud de función o un informe de errores. ¿Dónde debo publicar?
  3. ¿Dónde puedo hacer preguntas sobre una API en particular?
  4. ¿Qué es JSON?
  5. ¿Tengo que usar XML? ¿Hay otros formatos de datos disponibles?
  6. ¿Por qué usas REST?
  7. ¿Tienes alguna sugerencia o muestra de código breve para problemas habituales?
  8. ¿Gmail tiene una API de Data?
  9. Autenticación

  10. ¿Cuál es el nombre del servicio en ClientLogin para cada API de Data?
  11. Cuando un usuario sale de una aplicación, ¿es necesario informar a los servidores de la API?
  12. ¿Un token de autenticación de ClientLogin tiene una fecha de vencimiento?
  13. Tengo una pregunta general sobre las Cuentas de Google. ¿A dónde debería ir?
  14. ¿Cómo me autentico en una API?
  15. ¿Qué valor debo usar para el parámetro de alcance de AuthSub/OAuth 1?
  16. ¿Existen diferentes tipos de tokens de AuthSub? ¿Los tokens vencen?
  17. ¿Cuál es la principal diferencia entre ClientLogin y AuthSub/OAuth 1?
  18. ¿Puedo usar la autenticación de ClientLogin en aplicaciones web de terceros?
  19. ¿Qué es un CAPTCHA?
  20. ¿Cómo genero un desafío de CAPTCHA?
  21. ¿Debo usar ClientLogin en mi aplicación web?
  22. ¿Cómo puedo averiguar el nombre de usuario del usuario cuando uso AuthSub/OAuth 1?
  23. ¿Cómo uso OAuth 1 con las bibliotecas cliente de las APIs de Google Data?
  24. ¿Cómo uso AuthSub con las bibliotecas cliente de las APIs de Google Data?
  25. ¿Cómo uso ClientLogin con las bibliotecas cliente de las APIs de Google Data?
  26. Bibliotecas cliente

  27. ¿Qué lenguajes de programación tienen bibliotecas cliente compatibles con Google?
  28. ¿Cómo informo un error o solicito una función para una de las bibliotecas cliente de Google Data?
  29. ¿Cómo habilito las opciones de depuración en las bibliotecas cliente?
  30. ¿Dónde puedo encontrar documentos de referencia para las clases de la biblioteca cliente?
  31. Solución de problemas

  32. ¿Qué herramientas son buenas para la depuración de HTTP?
  33. ¿Cómo obtengo información de registro de HTTP en la biblioteca cliente de Java?
  34. ¿Cómo obtengo información de registro de HTTP en la biblioteca cliente de .NET?
  35. ¿Cómo puedo habilitar la codificación gzip desde los feeds de datos de Google?
  36. ¿Por qué veo el error "Unable to Connect to sslv2" cuando uso el cliente de PHP?
  37. ¿Cómo obtengo el documento de servicio de Atom que describe un feed?

Descripción general

¿Qué es una API de datos de Google?

Una API de datos de Google es una API basada en el protocolo de datos de Google. El protocolo de datos de Google se basa en los formatos de sindicación Atom 1.0 y RSS 2.0, además del protocolo de publicación de Atom (APP).

El protocolo de Google Data extiende esos estándares de varias maneras, utilizando los mecanismos de extensión integrados en los estándares. Los feeds cumplen con los formatos de distribución Atom o RSS. El modelo de publicación se ajusta al Protocolo de publicación de Atom.

El protocolo también proporciona un modelo general para los feeds, las búsquedas y los resultados. Puedes usarla para enviar consultas y actualizaciones a cualquier API de Data.

Tengo una solicitud de función o un informe de errores. ¿Dónde debo publicar?
Consulta nuestra herramienta de seguimiento de errores. Busca tu solicitud de función y destácala para agregar tu apoyo y recibir actualizaciones sobre su estado.
¿Dónde puedo hacer preguntas sobre una API en particular?
Si tu problema no aparece en la lista o deseas obtener más información, existen grupos de debate específicos para cada API de datos de Google:
¿Qué es JSON?

JSON hace referencia a JavaScript Object Notation.

JSON es un formato ligero de intercambio de datos cuya simplicidad ha generado un uso generalizado entre los desarrolladores web. Es fácil de leer y escribir, puedes analizarlo con cualquier lenguaje de programación y sus estructuras se asignan directamente a las estructuras de datos que se usan en la mayoría de los lenguajes de programación.

Obtén más información sobre cómo usar JSON con las APIs de Google Data.

¿Debo usar XML? ¿Hay otros formatos de datos disponibles?
El formato de datos predeterminado para las APIs de Google Data es XML, en forma de un feed de Atom. Sin embargo, cuando solicitas un feed, puedes especificar un formato alternativo con el parámetro de consulta alt.
  • alt=rss
    Los datos de respuesta tienen el formato de un feed RSS.
  • alt=json o alt=json-in-script
    Muestra una representación JSON de la estructura XML del feed de Atom. El beneficio adicional de JSON es que es más fácil de "analizar" en el código del cliente de JavaScript. Por el momento, el uso de JSON solo está disponible como opción de solo lectura. Sin embargo, usar la biblioteca cliente de JavaScript con los servicios de Blogger, Contactos o Calendario permite leer y escribir datos.

    Obtén más información para solicitar y usar feeds JSON.

  • alt=atom-in-script
    Es similar a alt=json-in-script, pero los resultados se devuelven como una cadena XML de Atom en lugar de JSON.
  • alt=rss-in-script
    Similar a alt=atom-in-script, pero los resultados se muestran como una cadena XML de RSS en lugar de Atom.

Obtén más información sobre los formatos alternativos en la Guía de referencia de datos de Google.

¿Por qué usas REST?
REST es simple, ligero, escalable y se adapta muy bien a la representación y la exposición de datos.
¿Tienes alguna sugerencia o muestra de código breve para problemas habituales?
Debes explorar el blog de sugerencias de la API de Google Data para obtener ayuda con nuestras bibliotecas cliente y con la realización de solicitudes sin procesar.
¿Gmail tiene una API de Data?

No, pero puedes usar el feed Atom de Gmail con AuthSub o OAuth 1 para solicitar acceso de solo lectura a los mensajes no leídos de un usuario. El alcance debe establecerse en https://mail.google.com/mail/feed/atom/. Una consulta de ejemplo sería la siguiente:

GET https://mail.google.com/mail/feed/atom/

Si te interesa administrar tu correo, Gmail también admite IMAP/POP.


Autenticación

En la documentación de las APIs de datos de Google, "OAuth" hace referencia a OAuth 1. Para obtener detalles sobre OAuth 2.0, consulta la documentación de tu API individual.

¿Cuál es el nombre del servicio en ClientLogin para cada API de datos?
Un "nombre de servicio" es una cadena breve que el sistema de autenticación de ClientLogin utiliza para identificar un servicio de Google.
API de Google Nombre del servicio
APIs de Google Analytics Data analytics
APIs de G Suite
(Domain Information & Management)
apps
Google Sites Data API jotspot
API de Blogger Data blogger
API de Book Search Data print
API de Calendar Data cl
API de Google Code Search Data codesearch
API de Contacts Data cp
Content API for Shopping structuredcontent
API de Documents List Data writely
API de Finance Data finance
Feed Atom de Gmail mail
API de Health Data health
weaver (zona de pruebas de H9)
APIs de Maps Data local
API de Picasa Web Albums Data lh2
API de datos de Sidewiki annotateweb
API de Spreadsheets Data wise
Webmaster Tools API sitemaps
API de YouTube Data youtube

Para obtener más información sobre los otros parámetros que se usan en una solicitud de ClientLogin, consulta la documentación de ClientLogin.

Cuando un usuario sale de una aplicación, ¿es necesario informar a los servidores de la API?
No, no es necesario informar a la API de Google Data cuando un usuario cierra sesión en una aplicación. Sin embargo, si tu aplicación ya no necesita usar un token de AuthSub emitido, debe revocar el token.
¿Un token de autenticación de ClientLogin tiene una fecha de vencimiento?
Un token de ClientLogin puede durar 2 semanas a partir de la fecha de emisión, pero este límite es específico del servicio y puede ser más corto.
Tengo una pregunta general sobre las Cuentas de Google. ¿A dónde debería ir?
Visita el Centro de ayuda de las Cuentas de Google.
¿Cómo me autentico en una API?
Tu solicitud HTTP debe incluir un encabezado de autorización que contenga un token obtenido con ClientLogin, AuthSub o OAuth 1.
¿Qué valor debo usar para el parámetro de alcance de AuthSub/OAuth 1?
AuthSub y OAuth 1 requieren un parámetro scope para identificar a qué servicios de Google tendrá acceso tu aplicación. Para obtener detalles sobre OAuth 2.0, consulta la documentación de tu API específica.

API de Google Nombre del servicio ClientLogin
API de datos de Google Analytics https://www.google.com/analytics/feeds/
Google Sites Data API http(s)://sites.google.com/feeds/
API de Blogger Data http://www.blogger.com/feeds/
API de Book Search Data http://www.google.com/books/feeds/
API de Calendar Data http(s)://www.google.com/calendar/feeds/
API de Contacts Data http(s)://www.google.com/m8/feeds/
Content API for Shopping https://www.googleapis.com/auth/structuredcontent
API de Documents List Data http(s)://docs.google.com/feeds/
API de Finance Data http://finance.google.com/finance/feeds/
Feed Atom de Gmail https://mail.google.com/mail/feed/atom/
API de Health Data https://www.google.com/health/feeds/
https://www.google.com/h9/feeds/ (zona de pruebas de H9)
API de Maps Data http://maps.google.com/maps/feeds/
API de Picasa Web Albums Data http://picasaweb.google.com/data/
API de Portable Contacts http://www-opensocial.googleusercontent.com/api/people
API de datos de Sidewiki http://www.google.com/sidewiki/feeds/
API de Spreadsheets Data http(s)://spreadsheets.google.com/feeds/
Webmaster Tools API http://www.google.com/webmasters/tools/feeds/
API de YouTube Data http://gdata.youtube.com
¿Existen diferentes tipos de tokens de AuthSub? ¿Los tokens vencen?
Existen dos tipos de tokens de AuthSub. El primero es un token de un solo uso que se presenta a tu aplicación web a través del parámetro de consulta "token". Este token vence la primera vez que se usa con el servicio para el que se emitió o cuando se intercambia por un token de sesión.

Los tokens de sesión no vencen, a menos que se revoquen explícitamente a través del usuario o la llamada a la API de AuthSubRevokeToken. Un token de un solo uso solo se puede intercambiar por un token de sesión si la URL original de AuthSubRequest especificó session=1 como un parámetro de consulta.
¿Cuál es la principal diferencia entre ClientLogin y AuthSub/OAuth 1?

AuthSub se diseñó para aplicaciones web. Garantiza que las credenciales del usuario se envíen de forma segura y directa desde el navegador web del usuario a los servidores de Google, en lugar de hacerlo a través de un sitio web de terceros.

ClientLogin es para aplicaciones de escritorio instaladas. Requiere que la aplicación solicitante transmita las credenciales del usuario a Google en nombre del usuario.

Consulta la documentación de la API de autenticación de la Cuenta de Google.

¿Puedo usar la autenticación de ClientLogin en aplicaciones web de terceros?
Se acepta el uso de ClientLogin en aplicaciones web de terceros, pero no se recomienda. Como práctica recomendada, la aplicación web nunca debe pedirle a un usuario sus credenciales de acceso (esto puede ser susceptible a la intromisión). En cambio, una aplicación debe almacenar las credenciales del usuario en el servidor y tener una sola "cuenta de servicio" que siempre se use para la autenticación con Google.
¿Qué es un CAPTCHA?
Un CAPTCHA (prueba de Turing pública y completamente automatizada para diferenciar a las computadoras de los humanos) es un tipo de prueba de desafío y respuesta que se usa para determinar si el usuario es humano. El término es una marca comercial de Carnegie Mellon University. Consulta más detalles en Wikipedia. Implementamos CAPTCHA en ClientLogin.
¿Cómo genero un desafío de CAPTCHA?
Se usa un algoritmo propietario para determinar cuándo se requiere un desafío de CAPTCHA durante la autenticación. Los intentos repetidos de autenticación con credenciales incorrectas suelen generar un desafío de CAPTCHA.
¿Debo usar ClientLogin en mi aplicación web?
No, ClientLogin debe ser utilizado por las aplicaciones instaladas en hardware propiedad del usuario. El uso de la API de ClientLogin en aplicaciones web no es seguro y se desaconseja.
¿Cómo puedo averiguar el nombre de usuario del usuario cuando uso AuthSub/OAuth 1?
Dado que Google solo te proporciona un token que otorga acceso a los feeds del usuario, es posible que no sepas cuál es su nombre de usuario. Esto puede ser un problema si la URL del feed que deseas usar contiene el nombre de usuario como parte de ella. En este caso, puedes usar el nombre de usuario especial default para indicar "el usuario cuyo token de autenticación estoy usando".
¿Cómo uso OAuth 1 con las bibliotecas cliente de las APIs de Google Data?
Consulta el artículo Cómo usar OAuth 1 con las bibliotecas cliente de las APIs de datos de Google.
¿Cómo uso AuthSub con las bibliotecas cliente de las APIs de Google Data?
Consulta el artículo Cómo usar AuthSub con las bibliotecas cliente de las APIs de datos de Google.
¿Cómo uso ClientLogin con las bibliotecas cliente de las APIs de datos de Google?
Consulta el artículo Cómo usar ClientLogin con las bibliotecas cliente de las APIs de datos de Google.

Bibliotecas cliente

¿Qué lenguajes de programación tienen bibliotecas cliente compatibles con Google?

Las bibliotecas cliente de Java, .NET, Python y Objective-C son compatibles oficialmente con Google. Además, nuestro socio Zend escribió una biblioteca cliente de PHP. Con estas bibliotecas, puedes crear solicitudes del protocolo de datos de Google, enviarlas a un servicio y procesar las respuestas del servidor. También hay una biblioteca cliente de JavaScript que, actualmente, solo admite Blogger, Calendario y Contactos de Google.

Si escribes una biblioteca cliente en un lenguaje que no sea Java, .NET, Python o Objective-C, y quieres compartirla con la comunidad de desarrolladores de la API de Data, publica tu mensaje en el grupo de debate de las APIs de Google Data. Nos encantaría conocer tu opinión.

¿Cómo informo un error o solicito una función para una de las bibliotecas cliente?

Los errores o las solicitudes de funciones para las bibliotecas cliente se pueden informar en las siguientes ubicaciones:

Después de publicar el error, crea un hilo en el foro de desarrolladores de la API correspondiente.

¿Cómo habilito las opciones de depuración en las bibliotecas cliente de las APIs de datos de Google?
Consulta el siguiente artículo para obtener información sobre cómo habilitar la depuración con algunas de las bibliotecas cliente: Debugging Google Data API Clients: Exploring Traffic from Within your Program
¿Dónde puedo encontrar documentos de referencia para las clases de la biblioteca cliente?
Biblioteca cliente Guía de referencia
Java Javadoc
JavaScript JSdoc
.NET NDoc
PHP phpDoc
Python PyDoc

Solución de problemas

¿Qué herramientas son buenas para la depuración de HTTP?

A continuación, se enumeran varias herramientas, pero también puedes leer el artículo On the Wire: Network Capture Tools for API Developers, que describe en detalle ejemplos de WireShark y Fiddler.

Wireshark
Wireshark es un "analizador de protocolos de red". Proporciona la capacidad de capturar el tráfico de red y analizar el contenido. Es muy útil para depurar el tráfico que se produce en bibliotecas en las que no tienes acceso directo a los flujos de solicitudes y respuestas HTTP. El tráfico entre tu aplicación y los servicios de autenticación no se puede analizar con Wireshark, ya que la comunicación se encripta con SSL. Wireshark también se puede usar para analizar el tráfico capturado con herramientas como tcpdump. Wireshark está disponible para los desarrolladores como código fuente y como instalador de Windows. Hay paquetes de terceros disponibles para muchas plataformas.
Fiddler
Fiddler es un "proxy de depuración HTTP". Si puedes configurar tu código o entorno de ejecución para usar un servidor proxy para el tráfico HTTP, Fiddler se ubicará entre tu aplicación y los servicios de datos de Google, donde te permitirá inspeccionar el tráfico. Fiddler 2 incluye compatibilidad con SSL. Actualmente, Fiddler solo está disponible para Windows.
cURL
cURL es una herramienta de línea de comandos que puede realizar solicitudes HTTP/HTTPS. Es muy útil para probar rápidamente las interacciones con un servicio sin tener que compilar primero la compatibilidad con HTTP en tu cliente.
¿Cómo obtengo información de registro de HTTP en la biblioteca cliente de Java?

Las bibliotecas cliente de Java usan el paquete java.util.logging para habilitar el registro de solicitudes HTTP. Esto te permitirá habilitar el registro de encabezados para solicitudes y respuestas, así como códigos de estado y URLs de solicitudes. Actualmente, no se registran los flujos completos de solicitudes y respuestas. El nombre del registrador que se usa para estos registros es com.google.gdata.client.http.HttpGDataRequest.

En el caso de que los servidores devuelvan un código de error, se arroja una excepción. Las clases de excepción heredan de com.google.gdata.util.ServiceException y incluyen un método público llamado getResponseBody(). Consulta el Javadoc para obtener más información.

¿Cómo obtengo información de registro de HTTP en la biblioteca cliente de .NET?
La biblioteca de .NET usa los métodos de seguimiento de System.Diagnostics para registrar la ruta de ejecución, si el seguimiento está habilitado. Además, en caso de error, se arroja un GDataRequestException. La excepción contiene un ResponseString que te permite acceder al cuerpo de la respuesta HTTP.
¿Cómo puedo habilitar la codificación gzip desde los feeds de datos de Google?

Para recibir una respuesta codificada en gzip de una de las APIs de datos de Google, debes hacer dos cosas: establecer un encabezado "Accept-Encoding" y modificar tu agente de usuario para que contenga la cadena "gzip". A continuación, se muestra un ejemplo de encabezados formados correctamente:

User-Agent: my program (gzip)
Accept-Encoding: gzip
¿Por qué veo el error "Unable to Connect to sslv2" cuando uso el cliente de PHP?

A partir de julio de 2009, comenzamos a inhabilitar SSLv2 en nuestros servidores como medida de precaución para mejorar la seguridad. Desafortunadamente, hay un error en las primeras versiones de la biblioteca cliente de PHP lanzadas antes de julio de 2007 (versión 1.0.0 y anteriores) que obliga a las conexiones a usar SSLv2. Cuando te conectas a un servidor que tiene SSLv2 inhabilitado, se produce el siguiente error:

PHP Fatal error:  Uncaught exception 'Zend_Http_Client_Adapter_Exception' with message 'Unable to Connect to sslv2://www.google.com:443.'

Para corregir este error, actualiza la biblioteca cliente de PHP a una versión más reciente, disponible en http://framework.zend.com/download.

Si no puedes actualizar a una versión más reciente, puedes solucionar este problema agregando el siguiente código a tu aplicación, donde $gdata es tu instancia existente de Zend_Gdata (o la subclase apropiada):

$gdata->getHttpClient()->setConfig(array('ssltransport' => 'ssl'));
¿Cómo obtengo el documento de servicio de Atom que describe un feed?

Puedes obtener el documento de servicio de Atom pasando el parámetro alt=atom-service en la solicitud. Nota: Solo la versión 2 de las APIs de Google Data devolverá un documento de servicio que se ajuste a la sintaxis del documento de servicio de AtomPub. La versión 1 de las APIs de datos de Google seguirá devolviendo un documento de servicio, pero se basa en una especificación de borrador de AtomPub anterior (hay cambios de sintaxis y espacio de nombres entre las dos versiones).