Guida per gli sviluppatori: .NET

Importante: A partire dal 30 settembre 2024 interromperemo il supporto per la versione 2.0 dell'API di dati di Google. Per assicurare un funzionamento continuo, aggiorna le applicazioni che utilizzano la versione 2.0 dell'API di dati di Google alla versione più recente dell'API. Per la versione più recente, utilizza i link nella barra di navigazione a sinistra. Nota: anche se alcune richieste GET (come i post della scheda) continueranno a essere supportate come URL del feed, esistono piccole differenze nel loro comportamento. Per informazioni dettagliate, consulta documentazione della Guida di Blogger.

L'API Blogger Data consente alle applicazioni client di visualizzare e aggiornare i contenuti di Blogger sotto forma di feed dell'API di dati di Google.

L'applicazione client può utilizzare l'API Blogger Data per creare nuovi post del blog, modificare o eliminare quelli esistenti e eseguire query sui post del blog che soddisfano determinati criteri.

Oltre a fornire alcune informazioni sulle funzionalità dell'API di dati di Blogger, questo documento fornisce esempi di interazioni di base con l'API di dati utilizzando la libreria client .NET. Se ti interessa saperne di più sul protocollo sottostante che degli usi delle librerie, consulta la sezione Protocollo della questa guida per gli sviluppatori.

Sommario

Pubblico

Questo documento è rivolto ai programmatori che vogliono scrivere applicazioni client .NET che possono interagire con Blogger.

In questo documento si presume che tu abbia compreso le idee generali alla base delle API di dati di Google del protocollo.

Per informazioni di riferimento sulle classi e sui metodi forniti dalla libreria client, consulta la documentazione di riferimento dell'API della libreria client .NET. Per informazioni generali di riferimento sull'API Blogger Data, consulta la Guida di riferimento del protocollo.

Per iniziare

Per assistenza sulla configurazione della libreria client, consulta la Guida introduttiva.

Per utilizzare la libreria client .NET, devi disporre del runtime .NET 1.1 e tutte le patch devono essere aggiornate. Dopo aver scaricato il libreria client, troverai le DLL necessarie per iniziare nella Sottodirectory lib/Release della distribuzione.

Creare un account Blogger

Ti consigliamo di creare un account Blogger per scopi di test. Blogger utilizza Account Google, quindi se Hai già un Account Google, è tutto pronto.

Eseguire il codice di esempio

Un client di esempio completamente funzionante, contenente tutto il codice di esempio mostrato in questo documento, è disponibile nel progetto della libreria client .NET. L'esempio si trova in /trunk/clients/cs/samples/blogger/ConsoleSample.cs nella scheda Origine del repository SVN.

Prima di compilare ed eseguire questo esempio, aggiorna i valori di username, password, blogName e postId con i valori appropriati. I valori username e password rappresentano le credenziali utilizzate per accedere a Blogger. Il valore blogName è l'inizio del post del blog URL.

Il client di esempio esegue diverse operazioni sul blog fornito per dimostrare l'utilizzo dell'API Blogger Data.

Per compilare gli esempi in questo documento nel tuo codice, è necessario il seguenti istruzioni using:

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

Autenticazione al servizio Blogger

Puoi accedere ai feed pubblici e privati utilizzando l'API Blogger Data. I feed pubblici non richiedono alcuna autenticazione, ma sono di sola lettura. Se vuoi modificare i blog, il client deve eseguire l'autenticazione prima di richiedere feed privati. Può eseguire l'autenticazione utilizzando uno dei due approcci: autenticazione proxy AuthSub o autenticazione nome utente/password ClientLogin.

Per ulteriori informazioni sull'autenticazione con le API di dati di Google in generale, vedi il link di autenticazione documentazione.

Autenticazione proxy AuthSub

L'autenticazione proxy AuthSub viene utilizzata dalle applicazioni web che devono autenticare i propri utenti negli Account Google. L'operatore del sito web e il codice client non hanno accesso al nome utente e alla password dell'utente di Blogger. Il client ottiene invece token AuthSub speciali che gli consentono di agire per conto di un determinato utente. Per informazioni più dettagliate, consulta la documentazione di AuthSub.

Quando un utente visita per la prima volta la tua applicazione, non è ancora stato autenticato. In questo caso, dovrai visualizzare alcune informazioni e un link indirizzando l'utente a una pagina Google per autenticare la richiesta di accesso a i propri blog.

Supponiamo che nella tua pagina sia definito il seguente link ipertestuale ASP:

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

Quindi, per creare l'URL AuthSubRequest per la tua applicazione, crea un alla libreria client come segue:

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

Il metodo getRequestUrl accetta i seguenti parametri (corrispondenti ai parametri di query utilizzati dall'handler AuthSubRequest):

avanti
L'URL della pagina a cui Google deve reindirizzare l'utente dopo l'autenticazione.
ambito
Indica che l'applicazione sta richiedendo un token per accedere ai feed di Blogger. La stringa di ambito da utilizzare è http://www.blogger.com/feeds/ (ovviamente codificata come URL).
sicuro
Indica se il client richiede un token sicuro.
sessione
Indica se il token restituito può essere scambiato con un token (di sessione) multiuso.

L'esempio riportato sopra mostra una chiamata che non richiede un token sicuro (il valore di secure è false). L'URL della richiesta risultante potrebbe avere il seguente aspetto:

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

L'utente segue il link al sito di Google e si autentica nel suo Account Google.

Dopo che l'utente ha eseguito l'autenticazione, il sistema AuthSub lo reindirizza all'URL specificato nel parametro di query next dell'URL AuthSubRequest. Il sistema AuthSub aggiunge a quell'URL un token di autenticazione, del parametro di query token. Di conseguenza, il token accessibile come variabile nel tag Request.QueryString della pagina ASP . L'utente viene reindirizzato a un URL simile al seguente:

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

Questo valore del token rappresenta un token AuthSub monouso. In questo esempio, poiché session = true è stato specificato, questo token può essere scambiato un token di sessione AuthSub, come segue:

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

Ciò significa che passi il token monouso exchangeForSessionToken, insieme al metodo null (per la modalità non registrata) o una chiave privata (per la modalità registrata) e il parametro AuthSub restituisce un token di sessione. Per ulteriori informazioni sulle applicazioni e sulle chiavi private registrate, consulta la sezione "Firma delle richieste" della documentazione di AuthSub.

La tua applicazione potrà quindi utilizzare il valore del token di sessione nelle interazioni successive con Blogger. Per indicare alla libreria client .NET di inviare automaticamente l'intestazione Authorization (contenente il token di sessione) con ogni richiesta, svolgi i seguenti passaggi:

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

Autenticazione nome utente/password ClientLogin

Utilizza l'autenticazione ClientLogin se il client è un client "installato" autonomo per un solo utente (ad esempio un'applicazione desktop). Imposta le credenziali dell'oggetto servizio come segue:

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

Nello snippet precedente, passiamo due parametri alla classe Service come costruttore. Il primo parametro è il nome del servizio con cui vogliamo interagire. Il secondo parametro è il nome della nostra applicazione nel formato companyName-applicationName-versionID. Abbiamo anche impostato Service.RequestFactory in modo da utilizzare solo un tipo di account GOOGLE per consentire l'autenticazione corretta per gli utenti di G Suite.

Per ulteriori informazioni sull'autenticazione ClientLogin, incluso un esempio richieste e risposte, consulta la sezione Autenticazione per Applicazioni.

Nota: utilizza lo stesso token per tutte le richieste in una determinata sessione; non acquisire un nuovo token per ogni richiesta di Blogger.

Nota: come descritto nella sezione ClientLogin documentazione, la richiesta di autenticazione potrebbe non andare a buon fine e richiedere un CAPTCHA sfida. Se desideri che Google emetta e gestisca il test CAPTCHA, indirizza l'utente a https://www.google.com/accounts/DisplayUnlockCaptcha?service=blogger (anziché l'URL di gestione CAPTCHA fornito in ClientLogin documentazione).

Recupero di un elenco di blog

L'API Blogger Data fornisce un feed che elenca i blog di un determinato utente; questo feed è noto come "metafeed".

Il seguente codice campione utilizza un oggetto Service autenticato per recuperare il metafeed e poi stampare il titolo di ciascun 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);
  }
}

Prendi nota dell'URL utilizzato dal metodo getFeed. Questa è l'impostazione predefinita URL del metafeed; viene restituito un elenco di blog per l'utente attualmente autenticato. Per accedere a un feed per un altro utente, puoi utilizzare l'ID utente al posto di default nell'URL del metafeed. L'ID utente è la stringa di cifre alla fine dell'URL del profilo dell'utente.

Creare post

L'API di dati di Blogger ti consente di creare e pubblicare nuove voci di blog, nonché la creazione di bozze delle voci.

Tutti gli esempi riportati di seguito presuppongono che tu abbia un oggetto Service autenticato.

Nota: puoi impostare un autore personalizzato per i post. attualmente non supportati. Tutti i nuovi post verranno visualizzati come se fossero stati creati dall'utente attualmente autenticato.

Pubblicare un post del blog

Puoi utilizzare la libreria client .NET per pubblicare nuovi post del blog.

Per prima cosa, crea un oggetto AtomEntry per rappresentare il post del blog. Poi puoi impostare il titolo, i contenuti e altri attributi del post del blog. Infine, utilizza l'oggetto Service per inserire il post. Ecco un esempio di come pubblicare un nuovo post del 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);

Il metodo Insert utilizza come parametro l'URL post del servizio. Il metodo restituisce la voce così come è stata memorizzata da Blogger. La voce riportata è la stessa che hai inviato, ma contiene anche vari elementi aggiunti da Blogger, ad esempio un ID post.

Se per qualche motivo la richiesta non va a buon fine, Blogger potrebbe restituire uno stato diverso. le API nel tuo codice. Per informazioni sui codici di stato, consulta il documento di riferimento del protocollo dell'API Google Data.

Creare una bozza di un post del blog

Le bozze dei post vengono create nello stesso modo dei post pubblici, ma è necessario impostarle l'attributo draft dell'oggetto AtomEntry. Il post del blog riportato sopra potrebbe essere creato come bozza aggiungendo la riga evidenziata:

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);

Puoi trasformare una bozza di post del blog esistente in un post pubblicato recuperandola, impostando l'attributo bozza su false e aggiornando il post. Tratteremo il recupero e l'aggiornamento dei post nelle due sezioni successive.

Recupero dei post

Le seguenti sezioni descrivono come recuperare un elenco di post del blog, con e senza parametri di query.

Puoi eseguire query su un feed pubblico di Blogger senza autenticazione. Pertanto, non è necessario impostare le credenziali o eseguire l'autenticazione AuthSub prima di recuperare i post da un blog pubblico.

Recupero di tutti i post del blog

Per recuperare i post dell'utente, chiama lo stesso metodo getFeed utilizzato per recuperare il metafeed dei blog, ma questa volta invia l'URL del feed dei post del 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);
}

Recupero dei post utilizzando i parametri di query

L'API di dati di Blogger ti consente di richiedere un insieme di voci corrispondenti a quanto specificato come la richiesta di pubblicare o aggiornare post del blog in una determinata data intervallo. A questo scopo, devi creare un oggetto FeedQuery e passarlo al Metodo Service.Query().

Ad esempio, per inviare una query relativa all'intervallo di date, imposta MinPublication e MaxPublication membri dell'oggetto FeedQuery. Il seguente snippet di codice stampa il titolo di ciascun post del blog pubblicato tra l'ora di inizio e l'ora di fine specificate:

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);
}

Tieni presente che l'oggetto FeedQuery viene creato utilizzando lo stesso URL del feed dei post utilizzato per recuperare i post.

L'API Blogger Data supporta i seguenti parametri di query:

alt
Il tipo di feed da restituire, ad esempio atom (il valore predefinito) o rss.
/category
Specifica le categorie (dette anche etichette) per filtrare i risultati del feed. Ad esempio, http://www.blogger.com/feeds/blogID/posts/default/-/Fritz/Laurie restituisce voci con le etichette Fritz e Laurie.
max-results
Il numero massimo di voci da restituire.
Orderby
L'ordine in cui restituire le voci, ad esempio lastmodified (il valore predefinito), starttime o updated.
min pubblicati, max pubblicati
I limiti relativi alle date di pubblicazione delle voci.
start-index
L'indice a partire da 1 del primo risultato da recuperare (per la paginazione).
updated-min, updated-max
I limiti per le date di aggiornamento delle voci. Questi parametri di query vengono ignorati a meno che il parametro orderby non sia impostato su updated.

Per ulteriori informazioni sui parametri di query, consulta la Guida di riferimento dell'API di dati di Blogger e la Guida di riferimento delle API di dati di Google.

Aggiornamento dei post

Per aggiornare un post del blog esistente, devi prima recuperare la voce da aggiornare, poi modificarla e infine inviarla a Blogger utilizzando il metodo Update() della voce. Il seguente snippet di codice modifica il titolo di un articolo del blog, sempre che tu abbia già recuperato la voce dal o server web.

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;
}

Il codice riportato sopra restituisce un valore AtomEntry contenente l'intera un post aggiornato di recente. Per aggiornare altre proprietà, impostale nell'oggetto AtomEntry prima di chiamare Update().

Nota: la modifica dei dati dell'autore associati ai post non è attualmente supportata.

Eliminazione dei post

Per eliminare un post, chiama il metodo Delete su un Oggetto AtomEntry, come questo:

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

Commenti

L'API Blogger Data consente di creare, recuperare ed eliminare i commenti. L'aggiornamento dei commenti non è supportato (né è disponibile sul web a riga di comando).

Creazione di commenti in corso...

Per pubblicare un commento, crea un oggetto AtomEntry e inseriscilo come segue:

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: al momento puoi pubblicare commenti solo su un blog di proprietà dell'utente autenticato.

Nota: per impostare un autore personalizzato per i commenti: attualmente non supportati. Tutti i nuovi commenti appariranno come se fossero stati creati da l'utente attualmente autenticato.

Recupero dei commenti in corso...

Puoi recuperare i commenti di un determinato post dai commenti di quel post 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);
    }
  }
}

In alternativa puoi recuperare i commenti di tutti i post utilizzando il feed dei commenti del blog URL:

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

Eliminazione dei commenti in corso...

Per eliminare un commento, chiama il metodo Delete() su un oggetto commento AtomEntry esistente come segue:

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

Torna all'inizio