Guía para desarrolladores: .NET

Importante: El 30 de septiembre de 2024, se descontinuará la compatibilidad con la API de datos de Google v2.0. Para garantizar una funcionalidad continua, actualiza tus aplicaciones que usan la versión 2.0 de la API de datos de Google a la versión más reciente de la API. Para acceder a la versión más reciente, utiliza los vínculos en la barra de navegación de la izquierda. Nota: Si bien algunas solicitudes GET (como las publicaciones de fichas) se seguirán admitiendo como URLs de feed, existen pequeñas diferencias en su comportamiento. Para obtener información detallada, consulta la documentación de ayuda de Blogger.

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 nuevas entradas de blog, editar o borrar entradas de blog existentes y buscar entradas de blog que coincidan con criterios particulares.

Además de brindar información sobre las funciones de la API de datos de Blogger, en este documento se proporcionan ejemplos de interacciones básicas de la API de datos con la biblioteca cliente de.NET. 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 desean escribir aplicaciones cliente de .NET que puedan interactuar con Blogger.

En este documento, se asume que comprendes las ideas generales del protocolo de APIs de datos de Google.

Para obtener información de referencia sobre las clases y los métodos proporcionados por la biblioteca cliente, consulta la referencia de la API de la biblioteca cliente de.NET. Para obtener información de referencia general de la API de datos de Blogger, consulta la Guía de referencia del protocolo.

Primeros pasos

Para obtener ayuda con la configuración de la biblioteca cliente, consulta la Guía de introducción.

Para usar la biblioteca cliente .NET, necesitarás el entorno de ejecución .NET 1.1. Además, debes estar actualizado en todos los parches. Después de descargar la biblioteca cliente, encontrarás los DLL que necesitas para comenzar en el subdirectorio lib/Release de la distribución.

Cómo crear una cuenta de Blogger

Para realizar pruebas, te recomendamos que registres una cuenta de Blogger. Blogger usa Cuentas de Google, por lo que, si ya tienes una, no tienes que hacer nada más.

Cómo ejecutar el código de muestra

En el proyecto de la biblioteca cliente de .NET, hay un cliente de muestra funcional completo, que contiene todo el código de muestra que se indica en este documento. La muestra se encuentra en /trunk/clients/cs/samples/blogger/ConsoleSample.cs en la pestaña Fuente del repositorio de SVN.

Antes de compilar y ejecutar esta muestra, actualiza los valores de username, password, blogName y postId con los valores adecuados. Los valores username y password representan las credenciales que se usan para acceder a Blogger. El valor blogName es el inicio de la URL de blog de tu blog.

El cliente de muestra realiza varias operaciones en el blog proporcionado para demostrar el uso de la API de datos de Blogger.

Para compilar los ejemplos de este documento en tu propio código, necesitarás las siguientes declaraciones using:

using Google.GData.Client;
using System.Net;
using System.Xml;
using System.Text.RegularExpressions;

Autenticación en el servicio de Blogger

Puedes acceder a feeds públicos y privados con la API de datos de Blogger. Los feeds públicos no requieren autenticación, pero son de solo lectura. Si quieres modificar los blogs, tu cliente deberá autenticarse antes de solicitar feeds privados. Puede autenticarse mediante uno de estos dos enfoques: la autenticación por proxy AuthSub o la autenticación con nombre de usuario y contraseña ClientLogin.

Para obtener más información sobre la autenticación con las APIs 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 las 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 su lugar, el cliente obtiene tokens de AuthSub especiales que le permiten actuar en nombre de un usuario específico. Para obtener información más detallada, consulta la documentación de AuthSub.

Cuando un usuario visita tu aplicación por primera vez, aún no se ha autenticado. En este caso, debes mostrar cierta información y un vínculo que dirija al usuario a una página de Google para autenticar tu solicitud de acceso a sus blogs.

Supongamos que se define el siguiente hipervínculo ASP en tu página:

<asp:HyperLink ID="GotoAuthSubLink" runat="server"/>

Luego, a fin de construir la URL de AuthSubRequest para tu aplicación, realiza una llamada a la biblioteca cliente de .NET de la siguiente manera:

GotoAuthSubLink.Text = "Login to your Google Account";
GotoAuthSubLink.NavigateUrl =
  AuthSubUtil.getRequestUrl("http://www.example.com/RetrieveToken",
  "http://www.blogger.com/feeds/",
  false,
  true);

El método getRequestUrl toma los siguientes parámetros (correspondientes a los parámetros de consulta que usa el controlador AuthSubRequest):

siguiente
La URL de la página a la que Google debe redireccionar al usuario después de la autenticación.
permiso
Indica que la aplicación solicita un token para acceder a los feeds de Blogger. La cadena de alcance que se usará es http://www.blogger.com/feeds/ (codificada en URL, por supuesto).
seguro
Indica si el cliente solicita un token seguro.
sesión
Indica si el token que se muestra se puede intercambiar por un token de uso múltiple (de sesión).

En el ejemplo anterior, se muestra una llamada que no solicita un token seguro (el valor de secure es false). La URL de solicitud resultante podría verse de la siguiente manera:

https://www.google.com/accounts/AuthSubRequest?scope=http%3A%2F%2Fwww.blogger.com%2Ffeeds%2F&session=1&secure=0&next=http%3A%2F%2Fwww.example.com%2FRetrieveToken

El usuario sigue el vínculo al sitio de Google y se autentica en su Cuenta de Google.

Después de que el usuario se autentica, el sistema de AuthSub lo redirecciona a la URL que especificaste en el parámetro de consulta next de la URL de AuthSubRequest. El sistema AuthSub agrega un token de autenticación a esa URL, como el valor del parámetro de consulta token. Por lo tanto, se puede acceder al token como una variable en el objeto Request.QueryString de la página ASP. Se redirecciona al usuario a una URL similar a la siguiente:

http://www.example.com/RetrieveToken?token=yourAuthToken

Este valor de token representa un token de AuthSub de un solo uso. En este ejemplo, dado que se especificó session = true, este token se puede intercambiar por un token de sesión de AuthSub de la siguiente manera:

SessionsessionToken = AuthSubUtil.exchangeForSessionToken(Request.QueryStringtoken, null);

Es decir, pasas tu token de uso único al método exchangeForSessionToken, junto con null (para el modo no registrado) o una clave privada (para el modo registrado), y la interfaz de AuthSub muestra un token de sesión. Para obtener más información sobre las aplicaciones registradas y las claves privadas, consulta la sección “Solicitudes de firma” de la documentación de AuthSub.

Así, tu aplicación podrá usar el valor del token de sesión en interacciones posteriores con Blogger. Para indicarle a la biblioteca cliente .NET que envíe de forma automática el encabezado de autorización (que contiene el token de sesión) con cada solicitud, haz lo siguiente:

GAuthSubRequestFactory authFactory = new GAuthSubRequestFactory("blogger", "BloggerSampleApp");
authFactory.Token = SessionsessionToken.ToString();
Service service = new Service(authFactory.ApplicationName);
service.RequestFactory = authFactory;

Autenticación de nombre de usuario y contraseña de ClientLogin

Usa la autenticación ClientLogin si tu cliente es un cliente independiente y de usuario único “instalado” (como una aplicación de escritorio). Configura las credenciales de tu objeto de servicio de la siguiente manera:

Service service = new Service("blogger", "exampleCo-exampleApp-1");
service.Credentials = new GDataCredentials("user@example.com", "secretPassword");
GDataGAuthRequestFactory factory = (GDataGAuthRequestFactory) service.RequestFactory;
factory.AccountType = "GOOGLE";

En el fragmento anterior, pasamos dos parámetros al constructor Service. El primer parámetro es el nombre del servicio con el que queremos interactuar. El segundo parámetro es el nombre de nuestra aplicación en el formato companyName-applicationName-versionID. También configuramos Service.RequestFactory para que use solo un tipo de cuenta GOOGLE a fin de permitir la autenticación adecuada para los usuarios de G Suite.

Para obtener más información sobre la autenticación ClientLogin, incluidas las solicitudes y respuestas de muestra, consulta la documentación Autenticación para aplicaciones instaladas.

Nota: Usa el mismo token para todas las solicitudes en una sesión determinada. No adquieras un token nuevo para cada solicitud de Blogger.

Nota: Como se describe en la documentación de ClientLogin, la solicitud de autenticación puede fallar y solicitar un desafío de CAPTCHA. Si quieres que Google emita y maneje el desafío de CAPTCHA, envía al usuario a https://www.google.com/accounts/DisplayUnlockCaptcha?service=blogger (en lugar de a la URL de control de CAPTCHA que se proporciona en la documentación de ClientLogin).

Recuperando una lista de blogs

La API de datos de Blogger proporciona un feed que enumera los blogs de un usuario en particular; ese feed se conoce como “metafeed”.

En el siguiente código de muestra, se usa un objeto Service autenticado para recuperar el metafeed y, luego, se imprime el título de cada blog.

query.Uri = new Uri("http://www.blogger.com/feeds/default/blogs");
AtomFeed feed = null;
try
{
  feed = service.Query(query);
  foreach (AtomEntry entry in feed.Entries)
  {
    Console.WriteLine("Blog Title: " + entry.Title.Text);
  }
}

Ten en cuenta la URL que usa el método getFeed. Esta es la URL de metafeed predeterminada, que muestra una lista de blogs para el usuario autenticado actualmente. Para acceder a un feed de otro usuario, puedes colocar el ID del usuario en lugar de default en la URL del metafeed. El ID del usuario es la cadena de dígitos que aparece al final de la URL del perfil del usuario.

Cómo crear publicaciones

La API de datos de Blogger te permite crear y publicar nuevas entradas de blog, así como crear borradores de entradas.

En los siguientes ejemplos, se da por sentado que tienes un objeto Service autenticado.

Nota: Por el momento, no se admite la configuración de un autor personalizado para las publicaciones. Todas las publicaciones nuevas aparecerán como si las hubiera creado el usuario autenticado actualmente.

Publicar una entrada de blog

Puedes usar la biblioteca cliente de .NET para publicar entradas de blog nuevas.

Primero, crea un objeto AtomEntry para representar la entrada de blog. Luego, puedes configurar el título, el contenido y otros atributos de la entrada de blog. Por último, usa el objeto Service para insertar la entrada. Este es un ejemplo de cómo publicar una entrada de blog nueva:

AtomEntry newPost = new AtomEntry();
newPost.Title.Text = "Marriage!";
newPost.Content = new AtomContent();
newPost.Content.Content = "<div xmlns='http://www.w3.org/1999/xhtml'>" +
  "<p>Mr. Darcy has <em>proposed marriage</em> to me!</p>" +
  "<p>He is the last man on earth I would ever desire to marry.</p>" +
  "<p>Whatever shall I do?</p>" +
  "</div>";
newPost.Content.Type = "xhtml";

Uri blogFeedUri = new Uri("http://www.blogger.com/feeds/" + blogId + "/posts/default");
AtomEntry createdEntry = service.Insert(blogFeedUri, newPost);

El método Insert toma la URL de publicación del servicio como parámetro. Luego, el método devuelve la entrada tal como la almacenó Blogger. La entrada que se muestra es la misma que enviaste, pero también contiene varios elementos que Blogger agregó, como el ID de una entrada.

Si por algún motivo tu solicitud falla, Blogger puede mostrar un código de estado diferente. Para obtener información sobre los códigos de estado, consulta el documento de referencia del protocolo de la API de datos de Google.

Crear un borrador de entrada de blog

Las publicaciones en borrador se crean de la misma manera que las entradas públicas, pero debes definir el atributo draft del objeto AtomEntry. Para crear la entrada de blog anterior como borrador, agrega la línea destacada:

AtomEntry newPost = new AtomEntry();
newPost.Title.Text = "Marriage!";
newPost.Content = new AtomContent();
newPost.Content.Content = "<div xmlns='http://www.w3.org/1999/xhtml'>" +
    "<p>Mr. Darcy has <em>proposed marriage</em> to me!</p>" +
    "<p>He is the last man on earth I would ever desire to marry.</p>" +
    "<p>Whatever shall I do?</p>" +
    "</div>";
newPost.Content.Type = "xhtml";
newPost.IsDraft = true;

Uri blogFeedUri = new Uri("http://www.blogger.com/feeds/" + blogId + "/posts/default");
AtomEntry createdEntry = service.Insert(blogFeedUri, newPost);

Para convertir un borrador de entrada de blog existente en una entrada publicada, recupera la entrada de borrador, configura el atributo borrador como falso y, luego, actualiza la entrada. Abordaremos la recuperación y la actualización de publicaciones en las siguientes dos secciones.

Cómo recuperar publicaciones

En las siguientes secciones, se describe cómo recuperar una lista de entradas de blog con y sin parámetros de consulta.

Puedes consultar un feed público de Blogger sin autenticación. Por lo tanto, no es necesario que configures credenciales ni realices una autenticación de AuthSub antes de recuperar las entradas de un blog público.

Recuperar todas las entradas del blog

Para recuperar las entradas del usuario, llama al mismo método getFeed que se usó para recuperar el metafeed de los blogs, pero esta vez envía la URL del feed de las entradas de blog:

query.Uri = new Uri("http://www.blogger.com/feeds/" + blogId + "/posts/default");
feed = service.Query(query);
Console.WriteLine(feed.Title.Text);
foreach (AtomEntry entry in feed.Entries)
{
  Console.WriteLine("Entry Title: " + entry.Title.Text);
}

Cómo recuperar publicaciones con parámetros de consulta

La API de datos de Blogger te permite solicitar un conjunto de entradas que coincidan con criterios específicos, como solicitar entradas de blog publicadas o actualizadas en un período determinado. Para ello, crea un objeto FeedQuery y pásalo al método Service.Query().

Por ejemplo, para enviar una consulta de período, configura los miembros MinPublication y MaxPublication del objeto FeedQuery. El siguiente fragmento de código imprime el título de cada entrada de blog publicada entre la hora de inicio y la hora de finalización determinadas:

FeedQuery query = new FeedQuery();
query.Uri = new Uri("http://www.blogger.com/feeds/" + blogId + "/posts/default");
query.MinPublication = new DateTime(2006, 1, 1);
query.MaxPublication = new DateTime(2007, 4, 12);
AtomFeed feed = service.Query(query);
foreach (AtomEntry entry in feed.Entries)
{
  Console.WriteLine("  Entry Title: " + entry.Title.Text);
}

Ten en cuenta que el objeto FeedQuery se construye con la misma URL del feed de entradas que se usa para recuperar las publicaciones.

La API de datos de Blogger admite los siguientes parámetros de consulta:

alt
El tipo de feed que se mostrará, como atom (configuración predeterminada) o rss.
/category
Especifica categorías (también conocidas como etiquetas) para filtrar los resultados del feed. Por ejemplo, http://www.blogger.com/feeds/blogID/posts/default/-/Fritz/Laurie muestra entradas con las etiquetas Fritz y Laurie.
max-results
La cantidad máxima de entradas que se mostrarán.
Ordenar por
Es el orden en el que se muestran las entradas, como lastmodified (la opción predeterminada), starttime o updated.
mínimo publicado, máximo publicado
Los límites en las fechas de publicación de las entradas
start-index
Es el índice basado en 1 del primer resultado que se recuperará (para paginación).
min-actualizado, actualización-máx.
Los límites en las fechas de actualización de las entradas Estos parámetros de consulta se ignoran, a menos que el parámetro orderby se configure como updated.

Si deseas obtener más información sobre los parámetros de consulta, consulta la Guía de referencia de la API de datos de Blogger y la Guía de referencia de las APIs de datos de Google.

Actualizando las publicaciones

Para actualizar una entrada de blog existente, primero recupera la entrada que quieres actualizar, modifícala y envíala a Blogger con el método Update() de la entrada. Con el siguiente fragmento de código, se modifica el título de una entrada de blog si ya recuperaste la entrada del servidor.

static AtomEntry EditEntry(AtomEntry toEdit)
{
  // Edit the entry by changing the Title and calling Update().
  if (toEdit != null)
  {
    toEdit.Title.Text = "Marriage Woes!";
    toEdit = toEdit.Update();
  }
  return toEdit;
}

El código anterior muestra un elemento AtomEntry que contiene toda la publicación que se actualizó recientemente. Para actualizar cualquier otra propiedad, simplemente configúrala en el objeto AtomEntry antes de llamar a Update().

Nota: Por el momento, no se pueden modificar los datos del autor asociados con las publicaciones.

Borrando publicaciones

Para borrar una publicación, llama al método Delete en un objeto AtomEntry existente, de la siguiente manera:

static void DeleteEntry(AtomEntry toDelete)
{
  // Delete the edited entry
  if (toDelete != null)
  {
    toDelete.Delete();
  }
}

Comentarios

La API de datos de Blogger permite crear, recuperar y borrar comentarios. No se admite la actualización de comentarios (ni está disponible en la interfaz web).

Cómo crear comentarios

Para publicar un comentario, crea un objeto AtomEntry y, luego, insértalo de la siguiente manera:

AtomEntry comment;
comment = new AtomEntry();
comment.Title.Text = "This is my first comment";
comment.Content.Content = "This is my first comment";
Uri commentPostUri = new Uri("http://www.blogger.com/feeds/" + blogId + "/" + entryId + "/comments/default");
postedComment = service.Insert(commentPostUri, comment);

Nota: Por el momento, solo puedes publicar comentarios en un blog que pertenezca al usuario autenticado.

Nota: Por el momento, no se admite la configuración de un autor personalizado para los comentarios. Todos los comentarios nuevos aparecerán como si los hubiera creado el usuario autenticado actual.

Recuperando comentarios

Puedes recuperar los comentarios de una publicación en particular desde la URL del feed de comentarios de la entrada:

static void ListEntryComments(Service service, Uri commentUri)
{
  if (commentUri != null)
  {
    // Retrieve all comments on a blog entry
    FeedQuery query = new FeedQuery();
    query.Uri = commentUri;
    AtomFeed feed = service.Query(query);
    foreach (AtomEntry entry in feed.Entries)
    {
      Console.WriteLine("  Comment Title: " + entry.Title.Text);
    }
  }
}

También puedes obtener los comentarios de todas las entradas con la URL del feed de comentarios del blog:

http://www.blogger.com/feeds/blogID/comments/default

Eliminación de comentarios

Para borrar un comentario, llama al método Delete() en un objeto AtomEntry de comentario existente de la siguiente manera:

static void DeleteComment(AtomEntry commentEntry)
{
  if (commentEntry != null)
  {
    // Delete the comment.
    commentEntry.Delete();
  }
}

Volver al principio