Guía para desarrolladores: JavaScript

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

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

Además de proporcionar información sobre las funciones de la API de datos de Blogger, este documento ofrece ejemplos de interacciones básicas con 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á dirigido a programadores que deseen escribir aplicaciones cliente de JavaScript que puedan interactuar con Blogger. Proporciona una serie de ejemplos de interacciones básicas con la API de datos mediante la biblioteca cliente de JavaScript.

Para obtener información de referencia de la API de Blogger Data, consulta la Guía de referencia del protocolo. En este documento, se asume que comprendes las ideas generales detrás del protocolo de las APIs de Google Data 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, y cada ejemplo se basa en los anteriores.

Condiciones de Uso

Cuando uses la biblioteca cliente de JavaScript, aceptas cumplir con las Condiciones de Uso de la Biblioteca Cliente de JavaScript de Google.

Información acerca de los entornos compatibles

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

La biblioteca cliente de JavaScript controla toda la comunicación con el servidor del servicio. Si eres un desarrollador de JS con experiencia, es posible que te preguntes: "¿Pero qué sucede con la política del mismo origen?". La biblioteca cliente de JavaScript permite que tu cliente envíe solicitudes a la API de Google Data desde cualquier dominio y, al mismo tiempo, cumpla con el modelo de seguridad del navegador.

Cómo comenzar

Antes de escribir una aplicación cliente de JavaScript, debes realizar algunos pasos de configuración para adquirir la biblioteca.

Crea una cuenta de Blogger

Te recomendamos que te registres para obtener una cuenta de Blogger para realizar pruebas. Blogger usa Cuentas de Google, por lo que, si ya tienes una, puedes comenzar a usar el servicio.

Adquisición de la biblioteca

Antes de que el 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 Google AJAX:

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

Para adquirir la biblioteca cliente de la API de Google Data después de recuperar el cargador, usa la siguiente línea en tu código de configuración de JavaScript, al que se debe llamar desde la sección <head> de tu documento HTML (o desde un archivo JavaScript que se incluye 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 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 principal 1.
"1.s"
La revisión estable más reciente de la versión principal 1. En ocasiones, 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
Una versión específica de la biblioteca, con un número de revisión principal y secundario especificado.

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

google.setOnLoadCallback(getMyBlogFeed);

En el que 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 conectado al elemento <body>.

Cómo autenticar en el servicio de Blogger

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

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

Autenticación de proxy de AuthSub

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

Esta es una breve descripción general de lo que sucede durante el proceso de autenticación de un cliente de JavaScript basado en la Web:

  1. La aplicación cliente llama al método google.accounts.user.login() que proporciona la biblioteca cliente y le pasa un valor de "alcance" que indica qué servicio de Google se debe usar. Para Blogger, el permiso es "http://www.blogger.com/feeds/".
  2. La biblioteca cliente envía el navegador a la página "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 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 devuelve el control a la función de la aplicación cliente que llamó a google.accounts.user.login().
  5. Cuando la aplicación cliente llama posteriormente a 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 autenticadas de Blogger 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 solo píxel, pero debe haber una imagen en la página. Si no quieres que la imagen aparezca en tu página, puedes usar el atributo style de la etiqueta <img> para posicionarla fuera del área de renderización. Por ejemplo: style="position:absolute; top: -1000px;".

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

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 algún otro mecanismo de entrada del usuario para solicitarle que inicie el proceso de acceso de forma manual. En cambio, si 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, Google no lo redirecciona a tu página. Por lo tanto, desde el punto de vista del usuario, intentó visitar tu página, pero se lo derivó a otra página y nunca se lo redireccionó. Esta situación puede ser confusa y frustrante para los usuarios. En el código de ejemplo de este documento, llamemos a google.accounts.user.login() inmediatamente después de la carga para mantener el ejemplo simple, pero no recomendamos este enfoque para aplicaciones cliente del mundo real.

Ten en cuenta que no tienes que hacer nada con la variable llamada token. La biblioteca cliente realiza un seguimiento del token, por lo que no es necesario.

Nota: Cuando creas un nuevo objeto BloggerService, 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 le muestra un mensaje de error al usuario. Si quieres controlar este tipo de error tu mismo, puedes llamar a google.gdata.client.init(handleInitError) de forma explícita antes de crear el servicio, donde handleInitError() es tu función. Si se produce un error de inicialización, tu función recibe un objeto Error estándar. Puedes hacer lo que quieras con ese objeto.

El token seguirá 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 la borre. La cookie se conserva en todas las sesiones del navegador, por lo que el usuario puede cerrar el navegador y, luego, volver a abrirlo y regresar a tu cliente sin salir de su cuenta.

Sin embargo, existen 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 debe controlar la condición de error llamando a logout() para quitar la cookie que contiene el token actual y, luego, volver a llamar a login() para adquirir un token nuevo y válido.

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

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

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

Volver al principio