Guía para desarrolladores: JavaScript

La API de datos de Blogger permite que las aplicaciones cliente vean y actualicen el contenido de Blogger en forma de feeds de la API de datos de Google.

Tu aplicación cliente puede usar la API de datos de Blogger para crear entradas de blog nuevas, editar o borrar entradas de blog existentes, y consultar entradas de blogs que coincidan con criterios específicos.

Además de proporcionar información sobre las capacidades de la API de datos de Blogger, en este documento, se proporcionan ejemplos de interacciones básicas para la API de datos mediante la biblioteca cliente de JavaScript. Si te interesa obtener más información sobre el protocolo subyacente que usa la biblioteca, consulta la sección Protocolo de esta guía para desarrolladores.

Contenido

Público

Este documento está destinado a programadores que desean escribir aplicaciones cliente de JavaScript que pueden interactuar con Blogger. Proporciona una serie de ejemplos de interacciones básicas de la API de datos con la biblioteca cliente de JavaScript.

Para obtener información de referencia de la API de datos de Blogger, consulta la Guía de referencia del protocolo. En este documento, se supone que comprendes las ideas generales detrás del protocolo de las API de datos de Google y el modelo de datos y el flujo de control que usa la biblioteca cliente de JavaScript. También se supone que sabes programar en JavaScript.

Para obtener información de referencia sobre las clases y los métodos que proporciona la biblioteca cliente, consulta la referencia de la API de la biblioteca cliente de JavaScript.

Este documento está diseñado para leerse en orden; cada ejemplo se basa en ejemplos anteriores.

Condiciones de Uso

Aceptas las Condiciones de uso de la biblioteca cliente de JavaScript de Google para utilizar la biblioteca cliente de JavaScript.

Acerca de los entornos compatibles

Actualmente, solo admitimos aplicaciones cliente de JavaScript que se ejecutan en una página web en un navegador. Por el momento, los navegadores compatibles son Firefox 1.5 y versiones posteriores, e Internet Explorer 6.0 y versiones posteriores.

La biblioteca cliente de JavaScript maneja toda la comunicación con el servidor del servicio. Si eres un desarrollador de JS experimentado, es posible que estés pensando... Pero ¿qué ocurre con la misma política de origen? La biblioteca cliente de JavaScript permite que el cliente envíe solicitudes de la API de datos de Google desde cualquier dominio y, a la vez, cumpla con el modelo de seguridad del navegador.

Cómo comenzar

Antes de poder escribir una aplicación cliente de JavaScript, debes realizar algunas configuraciones para adquirir la biblioteca.

Creación de una cuenta de Blogger

Te recomendamos que te registres en una cuenta de Blogger para realizar pruebas. Blogger usa Cuentas de Google, así que si ya tienes una, ya estás listo.

Cómo adquirir la biblioteca

Antes de que tu cliente pueda usar la biblioteca cliente, debe solicitar el código de la biblioteca cliente al servidor.

Comienza por usar una etiqueta <script> en la sección <head> de tu documento HTML para recuperar el cargador de la API de AJAX de Google:

<script type="text/javascript" src="https://www.google.com/jsapi"></script>

Para adquirir la biblioteca cliente de la API de datos de Google después de recuperar el cargador, usa la siguiente línea de tu código de configuración de JavaScript, a la que se debe llamar desde la sección <head> de tu documento HTML (o desde un archivo JavaScript que se incluya con una etiqueta <script> en la sección <head> de tu documento HTML):

google.load("gdata", "1.x");

El segundo parámetro de google.load() es el número de versión solicitado de la biblioteca cliente de JavaScript.Nuestro esquema de numeración de las versiones se basa en el que usa la API de Google Maps. Estos son los números de versión posibles y su significado:

"1"
La penúltima revisión de la versión principal 1.
"1.x"
La revisión más reciente de la versión 1 principal.
"1.s"
La revisión estable más reciente de la versión 1 principal. Ocasionalmente, declararemos que una versión determinada de la biblioteca cliente es estable en función de los comentarios que recibimos de los desarrolladores. Sin embargo, es posible que esa versión no tenga las funciones más recientes.
"1.0", "1.1&etc.
Es una versión específica de la biblioteca, con un número de revisión principal y menor especificado.

Después de llamar a google.load(), debes indicarle al cargador que espere hasta que la página termine de cargarse y que llame a tu código:

google.setOnLoadCallback(getMyBlogFeed);

En el ejemplo anterior, getMyBlogFeed() es una función que definiremos en una sección posterior de este documento. Usa este enfoque en lugar de tener un controlador onload adjunto al elemento <body>.

Autenticación en el servicio de Blogger

Puedes acceder a los feeds públicos y privados mediante la API de datos de Blogger. Los feeds públicos no requieren autenticación, pero son de solo lectura. Si deseas modificar los blogs, tu cliente debe autenticarse antes de solicitar los feeds privados.

La biblioteca cliente de JavaScript usa el sistema de autenticación AuthSub. Para obtener más información sobre la autenticación con las API de datos de Google en general, consulta la documentación de autenticación.

Autenticación del proxy de AuthSub

Las aplicaciones web que necesitan autenticar a sus usuarios en Cuentas de Google usan la autenticación del proxy de AuthSub. El operador del sitio web y el código de cliente no tienen acceso al nombre de usuario y la contraseña del usuario de Blogger; en cambio, el cliente obtiene tokens especiales de AuthSub que le permiten al cliente actuar en nombre de un usuario en particular.

A continuación, se muestra una breve descripción general de lo que sucede durante el proceso de autenticación para un cliente de JavaScript basado en la Web:

  1. La aplicación cliente llama al método google.accounts.user.login() proporcionado por la biblioteca cliente y le pasa un valor de alcance que indica qué servicio de Google usar. Para Blogger, el alcance es "http://www.blogger.com/feeds/".
  2. La biblioteca cliente envía el navegador a la página de solicitud de acceso de Google, en la que el usuario puede ingresar sus credenciales para acceder al servicio.
  3. Si el usuario accede correctamente, el sistema AuthSub envía el navegador de nuevo a la URL del cliente web y pasa el token de autenticación.
  4. La biblioteca cliente de JavaScript almacena el token en una cookie y muestra el control de la función de la aplicación cliente que llamó a google.accounts.user.login().
  5. Cuando la aplicación cliente llama posteriormente a los métodos de la biblioteca cliente que interactúan con Blogger, la biblioteca cliente adjunta automáticamente el token a todas las solicitudes.

Nota: Para que la biblioteca cliente de JavaScript realice solicitudes de Blogger autenticadas en un navegador web, tu página debe contener una imagen alojada en el mismo dominio que tu página. Puede ser cualquier imagen, incluso una imagen transparente de un píxel, pero debe haber una en la página. Si quieres que la imagen no aparezca en tu página, puedes usar el atributo style de la etiqueta <img> para posicionarla fuera del área de procesamiento. Por ejemplo: style="position:absolute; top: -1000px;".

Este es el código de la aplicación cliente que controla el acceso. Más adelante, llamaremos a la función setupMyService() desde otro código.

function logMeIn() {
  scope = "http://www.blogger.com/feeds/";
  var token = google.accounts.user.login(scope);
}

function setupMyService() {
  var myService =
    new google.gdata.blogger.BloggerService('exampleCo-exampleApp-1');
  logMeIn();
  return myService;
}

Sugerencia: Te recomendamos que proporciones un botón de acceso, o bien otro mecanismo de entrada del usuario, para solicitarle al usuario que inicie el proceso de acceso de forma manual. Si, en cambio, llamas a google.accounts.user.login() inmediatamente después de la carga, sin esperar la interacción del usuario, lo primero que verá el usuario cuando llegue a tu página será una página de acceso de Google. Si el usuario decide no acceder, entonces Google no lo dirige de vuelta a tu página; por lo tanto, desde el punto de vista del usuario, intentó visitar tu página, pero no fue enviado y nunca volvió. Esta situación puede ser confusa y frustrante para los usuarios. En el código de ejemplo de este documento, llamaremos a google.accounts.user.login() inmediatamente después de cargarlo para mantener el ejemplo simple, pero no recomendamos este enfoque para aplicaciones cliente reales.

Ten en cuenta que no debes hacer nada con la variable llamada token; la biblioteca cliente realiza un seguimiento del token para que no tengas que hacerlo.

Nota: Cuando creas un objeto BloggerService nuevo, la biblioteca cliente llama a un método llamado google.gdata.client.init(), que verifica que el navegador en el que se ejecuta el cliente sea compatible. Si hay un error, la biblioteca cliente muestra un mensaje de error al usuario. Si deseas manejar este tipo de error por tu cuenta, puedes llamar a google.gdata.client.init(handleInitError) de forma explícita antes de crear el servicio, en el que handleInitError() es tu función. Si se produce un error init, tu función recibe un objeto de error estándar; puedes hacer lo que desees con ese objeto.

El token sigue siendo válido hasta que lo revoques llamando a google.accounts.user.logout():

function logMeOut() {
  google.accounts.user.logout();
}

Si no llamas a logout(), la cookie que almacena el token dura dos años, a menos que el usuario lo borre. La cookie se guarda en las diferentes sesiones del navegador, por lo que el usuario puede cerrarla, volver a abrirla y regresar a su cliente para que pueda acceder.

Sin embargo, hay ciertas circunstancias inusuales en las que un token puede dejar de ser válido durante una sesión. Si Blogger rechaza un token, tu cliente debería controlar la condición de error llamando a logout() para quitar la cookie que contiene el token actual y, luego, llamando a login() nuevamente para adquirir un token nuevo y válido.

Existen otros dos métodos de AuthSub que pueden resultarte útiles en varios contextos:

  • google.accounts.user.checkLogin(scope) te indica si el navegador tiene o no un token de autenticación para el alcance dado.
  • google.accounts.user.getInfo() proporciona información detallada sobre el token actual para depurar.

Si deseas obtener detalles sobre el uso de JavaScript para interactuar con AuthSub, incluida la información sobre la administración de tokens y sobre checkLogin() y getInfo(), consulta el documento Cómo usar la autenticación con la biblioteca cliente de JavaScript.

Volver al principio