Importante: A partir del 30 de septiembre de 2024, descontinuaremos la compatibilidad con la API de Google Data v2.0. Para garantizar la continuidad del funcionamiento, actualiza las aplicaciones que usan la versión 2.0 de la API de Google Data a la versión más reciente de la API. Para obtener la versión más reciente, usa los vínculos de la barra de navegación de la izquierda. Nota: Aunque algunas solicitudes GET (como las publicaciones de fichas) seguirán siendo compatibles como feed. de sitios web, existen pequeñas diferencias en su comportamiento. Para obtener información detallada, consulta la Ayuda de Blogger.
La API de datos de Blogger permite que las aplicaciones cliente vean y actualicen Blogger contenido en forma de feeds de la API de datos de Google.
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 Blogger, API de datos, en este documento se proporcionan ejemplos de interacciones básicas de la API de datos mediante la biblioteca cliente.NET. Si pero si estás interesado en comprender mejor el protocolo subyacente usos de 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 .NET que puedan interactuar con Blogger.
En este documento, se da por sentado que comprendes las ideas generales detrás del protocolo de las APIs de Google Data.
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 .NET. Para obtener información de referencia general de la API de Blogger Data, consulta la Guía de referencia del protocolo.
Cómo comenzar
Si necesitas ayuda para configurar 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
también deben estar actualizados en todos los parches. Luego de descargar la
biblioteca cliente, encontrarás las DLL que necesitas para comenzar en la
Subdirectorio lib/Release
de la distribución.
Crea una cuenta de Blogger
Te recomendamos que te registres para obtener un Cuenta de Blogger con fines de prueba. Blogger usa Cuentas de Google, así que si ya tienes una Cuenta de Google, no tienes que hacer nada más.
Cómo ejecutar el código de muestra
Un cliente de muestra funcional completo, que contenga todo el código de muestra que aparece en este está disponible en el proyecto de la biblioteca cliente de .NET. 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 del blog de tu blog
URL.
El cliente de ejemplo realiza varias operaciones en el blog proporcionado para demostrar el uso de la API de Blogger Data.
Para compilar los ejemplos de este documento en tu propio código, necesitarás las siguientes instrucciones 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 los feeds públicos y privados con la API de datos de Blogger. Los feeds públicos no requieren ninguna autenticación, pero son de solo lectura. Si modificar un blog, entonces tu cliente debe autenticarse antes de solicitar feeds privados. Puede autenticarse con cualquiera de estos dos enfoques: la autenticación del proxy AuthSub o la autenticación con nombre de usuario y contraseña de ClientLogin.
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
La autenticación del proxy de AuthSub es utilizada por las aplicaciones web que necesitan autenticar a sus usuarios en Cuentas de Google. El operador del sitio web y el cliente no tenga acceso al nombre de usuario ni a la contraseña del usuario de Blogger. en su lugar, el cliente obtiene tokens AuthSub especiales que le permiten actuar en nombre de un usuario en particular. 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 autenticó. En este caso, debes mostrar información y un vínculo dirigir al usuario a una página de Google para autenticar tu solicitud de acceso a sus blogs.
Supongamos que el siguiente hipervínculo ASP está definido en su página:
<asp:HyperLink ID="GotoAuthSubLink" runat="server"/>
Luego, para construir la URL de AuthSubRequest para tu aplicación, crea una instancia de .NET llamada a la biblioteca cliente 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
incluye los siguientes parámetros
(correspondiente a los parámetros de consulta que usa el controlador de AuthSubRequest):
- siguiente
- Es la URL de la página a la que Google debe redireccionar al usuario después de la autenticación.
- alcance
- Indica que la aplicación solicita un token para acceder a los feeds de Blogger. La string de alcance que se debe usar es
http://www.blogger.com/feeds/
(codificada como 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 (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
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 como la siguiente:
http://www.example.com/RetrieveToken?token=yourAuthToken
Este valor de token representa un token AuthSub de un solo uso. En este ejemplo,
como 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, se pasa el token de un solo uso al
exchangeForSessionToken
, junto con null
(para el modo no registrado) o una clave privada (para el modo registrado), y el sistema de autenticación
muestra un token de sesión. Para obtener más información
aplicaciones y claves privadas, consulta el artículo "Firma de solicitudes"
de la documentación de AuthSub.
Luego, tu aplicación puede usar el valor del token de sesión en interacciones posteriores con Blogger. Para indicarle a la biblioteca cliente de .NET que envíe automáticamente 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/contraseña de ClientLogin
Usa la autenticación de ClientLogin si tu cliente es un cliente "instalado" independiente para un solo usuario (como una aplicación para computadoras de escritorio). Establece 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 Service
.
. El primer parámetro es el nombre del servicio con el que queremos interactuar.
tus amigos. El segundo parámetro es el nombre de nuestra aplicación en el formato companyName-applicationName-versionID. También configuramos Service.RequestFactory
para que solo use un tipo de cuenta GOOGLE
para permitir la autenticación adecuada de los usuarios de G Suite.
Para obtener más información sobre la autenticación de ClientLogin, incluida la solicitudes y respuestas, consulta el artículo Autenticación para Aplicaciones.
Nota: Usa el mismo token para todas las solicitudes de un sesión determinada; no adquieren un token nuevo para cada solicitud de Blogger.
Nota: Como se describe en la documentación de ClientLogin, es posible que la solicitud de autenticación falle y solicite un desafío de CAPTCHA. Si deseas que Google emita y controle 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).
Cómo recuperar una lista de blogs
La API de datos de Blogger brinda un feed en el que se enumeran los blogs de un user; se conoce como "metafeed".
En el siguiente código de muestra, se usa un objeto Service
autenticado
para recuperar el metafeed y, luego, imprimir 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); } }
Anota la URL que usa el método getFeed
. Esta es la URL predeterminada del metafeed, 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 de su perfil.
Cómo crear publicaciones
La API de Blogger Data te permite crear y publicar entradas de blog nuevas, así como crear borradores de entradas.
En todas las siguientes muestras, se supone que tienes un
Service
.
Nota: Por el momento, no se admite configurar un autor personalizado para las publicaciones. Todas las publicaciones nuevas aparecerán como si las hubiera creado el usuario autenticado actualmente.
Publica una entrada de blog
Puedes usar la biblioteca cliente de .NET para publicar nuevas entradas de blog.
Primero, crea un objeto AtomEntry
para representar la entrada de blog.
Luego, puedes establecer el título, el contenido y otros atributos de la entrada de blog.
Por último, usa el objeto Service
para insertar la publicación. Este es un
ejemplo de cómo publicar una nueva entrada de blog:
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 la publicación del servicio como parámetro.
Luego, el método muestra la entrada tal como la almacenó Blogger. Entrada
que se devuelve es el mismo que enviaste, pero también contiene varios elementos agregados
por Blogger, como el ID de una entrada.
Si tu solicitud falla por algún motivo, es posible que Blogger muestre un código de estado diferente. Para obtener más información sobre los códigos de estado, consulta la sección Documento de referencia del protocolo de la API.
Cómo crear un borrador de entrada de blog
Las publicaciones de borrador se crean de la misma manera que las publicaciones públicas, pero debes configurar el atributo draft
del objeto AtomEntry
. La entrada de blog anterior se podría crear como un borrador si se 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 una entrada de blog existente en una entrada publicada, puedes recuperarla la entrada borrador, configurando el atributo borrador como falso y actualizando el publicación. En las siguientes dos secciones, hablaremos sobre cómo recuperar y actualizar publicaciones.
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 necesitas configurar credenciales ni realizar la autenticación de AuthSub antes de recuperar publicaciones de un blog público.
Recuperando todas las entradas del blog
Para recuperar las publicaciones del usuario, llama al mismo método getFeed
que se usa
para recuperar el metafeed de los blogs, pero esta vez envía la URL del feed de publicaciones 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 lo especificado
criterios, como solicitar entradas de blog publicadas o actualizadas en una fecha determinada
del rango de destino de la ruta. Para ello, crea un objeto FeedQuery
y pásalo al
Service.Query()
.
Por ejemplo, para enviar una consulta de período, establece los miembros MinPublication
y MaxPublication
del objeto FeedQuery
.
En el siguiente fragmento de código, se 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 publicaciones que se usa para recuperar las publicaciones.
La API de datos de Blogger admite los siguientes parámetros de consulta:
- alt
- Es el tipo de feed que se mostrará, como
atom
(el predeterminado) orss
. - /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 etiquetasFritz
yLaurie
. - resultados-máx.
- Es la cantidad máxima de entradas que se mostrarán.
- orden
- Es el orden en el que se muestran las entradas, como
lastmodified
(predeterminado),starttime
oupdated
. - mínimo-publicado, máximo-publicado
- Los límites en las fechas de publicación de la entrada.
- start-index
- Es el índice basado en 1 del primer resultado que se recuperará (para paginación).
- updated-min, updated-max
- Los límites en las fechas de actualización de la entrada. Estos parámetros de consulta se ignoran, a menos que el parámetro
orderby
se establezca enupdated
.
Para 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 publicaciones
Para actualizar una entrada de blog existente, primero debes recuperar la entrada que quieres actualizar, luego, modificarla y, luego, enviarla a Blogger con el método Update()
de la entrada. En el siguiente fragmento de código, se modifica el título de una entrada de blog, siempre que ya hayas recuperado 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 una AtomEntry
que contiene toda la entrada que se actualizó recientemente. Para actualizar cualquier otra propiedad, simplemente establécelas en el
AtomEntry
antes de llamar a Update()
.
Nota: Modificar los datos del autor asociados con publicaciones no es compatible actualmente.
Cómo borrar publicaciones
Para borrar una publicación, llama al método Delete
en un archivo
AtomEntry
, como este:
static void DeleteEntry(AtomEntry toDelete) { // Delete the edited entry if (toDelete != null) { toDelete.Delete(); } }
Comentarios
La API de Blogger Data permite crear, recuperar y borrar comentarios. No se pueden actualizar los comentarios (ni están disponibles 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: Actualmente, solo puedes publicar comentarios en un blog que pertenezca al usuario autenticado.
Nota: Por el momento, no se admite configurar un autor personalizado para los comentarios. Todos los comentarios nuevos aparecerán como si los hubiera creado el usuario autenticado actualmente.
Cómo recuperar comentarios
Puedes recuperar los comentarios de una publicación específica a partir de los comentarios de la publicación. URL del feed:
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 publicaciones con la URL del feed de comentarios del blog:
http://www.blogger.com/feeds/blogID/comments/default
Cómo borrar comentarios
Para borrar un comentario, llama al método Delete()
en un archivo
comentario AtomEntry
objeto de la siguiente manera:
static void DeleteComment(AtomEntry commentEntry) { if (commentEntry != null) { // Delete the comment. commentEntry.Delete(); } }