Importante: interromperemo il supporto per l'API di dati di Google v2.0 il 30 settembre 2024. Per garantire una funzionalità continuativa, aggiorna le applicazioni che si basano sull'API di dati di Google v2.0 alla versione più recente. Per la versione più recente, utilizza i link nella barra di navigazione a sinistra. Nota: anche se alcune richieste GET (come i post con schede) continueranno a essere supportate come URL dei feed, esistono piccole differenze nel loro comportamento. Per informazioni dettagliate, consulta la 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 API di dati di Google.
L'applicazione client può utilizzare l'API Blogger Data per creare nuovi post di blog, modificare o eliminare post di blog esistenti e cercare post del blog che corrispondono a criteri specifici.
Oltre a fornire alcune informazioni di base sulle funzionalità dell'API Blogger Data, questo documento fornisce esempi di interazioni di base dell'API di dati che utilizzano la libreria client.NET. Se vuoi saperne di più sul protocollo sottostante utilizzato dalla libreria, consulta la sezione Protocollo di questa guida per gli sviluppatori.
Sommario
Pubblico
Questo documento è destinato ai programmatori che desiderano scrivere applicazioni client .NET in grado di interagire con Blogger.
Questo documento presuppone che tu comprenda le idee generali alla base del protocollo delle API di dati di Google.
Per informazioni 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 al protocollo.
Per iniziare
Per assistenza nella configurazione della libreria client, consulta la Guida introduttiva.
Per utilizzare la libreria client .NET, devi disporre del runtime .NET 1.1 e di tutte le patch aggiornate. Dopo aver scaricato la libreria client, troverai le DLL necessarie per iniziare nella sottodirectory lib/Release
della distribuzione.
Creazione di un account Blogger
Ti consigliamo di creare un account Blogger a scopo di test. Blogger utilizza Account Google, quindi se ne hai già uno, non devi fare altro.
Esecuzione del codice campione
Nel progetto della libreria client .NET è disponibile un client di esempio completo, contenente tutto il codice campione mostrato in questo documento. L'esempio si trova all'indirizzo /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 dell'URL del post del blog.
Il client di esempio esegue diverse operazioni sul blog fornito per dimostrare l'utilizzo dell'API di dati di Blogger.
Per compilare gli esempi in questo documento nel tuo codice, sono necessarie le seguenti istruzioni using
:
using Google.GData.Client; using System.Net; using System.Xml; using System.Text.RegularExpressions;
Autenticazione nel servizio Blogger
Puoi accedere a 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 cliente deve eseguire l'autenticazione prima di richiedere feed privati. Può eseguire l'autenticazione utilizzando uno dei due approcci seguenti: autenticazione proxy AuthSub o autenticazione nome utente/password ClientLogin.
Per ulteriori informazioni sull'autenticazione con le API di dati di Google in generale, consulta la documentazione sull'autenticazione.
Autenticazione proxy AuthSub
L'autenticazione tramite proxy AuthSub viene utilizzata dalle applicazioni web che devono autenticare i propri utenti per gli Account Google. L'operatore del sito web e il codice client non hanno accesso al nome utente e alla password dell'utente Blogger; invece, il client ottiene speciali token AuthSub che consentono al client 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, devi visualizzare alcune informazioni e un link che indirizzi l'utente a una pagina Google per autenticare la tua richiesta di accesso ai suoi 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 l'applicazione, effettua una chiamata alla libreria client .NET 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 dal gestore AuthSubRequest):
- avanti
- L'URL della pagina a cui Google deve reindirizzare l'utente dopo l'autenticazione.
- ambito
- Indica che l'applicazione richiede un token per accedere ai feed di Blogger. La stringa di ambito da utilizzare è
http://www.blogger.com/feeds/
(ovviamente con codifica URL). - sicuro
- Indica se il client richiede un token sicuro.
- sessione
- Indica se il token restituito può essere scambiato con un token multiuso (di sessione).
L'esempio riportato sopra mostra una chiamata che non richiede un token protetto (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 proprio Account Google.
Dopo l'autenticazione dell'utente, il sistema AuthSub lo reindirizza all'URL specificato nel parametro di query next
dell'URL AuthSubRequest. Il sistema AuthSub aggiunge un token di autenticazione all'URL come valore del parametro di query token
. Pertanto, il token è accessibile come variabile nell'oggetto 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é è stato specificato session = true
, questo token può essere scambiato
con un token di sessione AuthSub, come segue:
SessionsessionToken = AuthSubUtil.exchangeForSessionToken(Request.QueryStringtoken, null);
Vale a dire che passi il token monouso al metodo exchangeForSessionToken
, insieme a null
(per la modalità non registrata) o a una chiave privata (per la modalità registrata) e l'interfaccia AuthSub restituisce un token di sessione. Per ulteriori informazioni sulle applicazioni registrate e sulle chiavi private, consulta la sezione "Richieste di firma" della documentazione di AuthSub.
L'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 di autorizzazione (contenente il token di sessione) con ogni richiesta:
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 autonomo "installato" per utente singolo (ad esempio un'applicazione desktop). Imposta le credenziali dell'oggetto di 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 riportato sopra, passiamo due parametri al costruttore Service
. Il primo parametro è il nome del servizio con cui
vuoi interagire. Il secondo parametro è il nome della nostra applicazione nel formato companyName-applicationName-versionID. Inoltre, impostiamo Service.RequestFactory
in modo che utilizzi solo un tipo di account GOOGLE
al fine di consentire l'autenticazione corretta per gli utenti di G Suite.
Per ulteriori informazioni sull'autenticazione ClientLogin, inclusi richieste e risposte di esempio, consulta la documentazione relativa all'autenticazione per le applicazioni installate.
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 documentazione di ClientLogin, la richiesta di autenticazione potrebbe non riuscire e richiedere una verifica CAPTCHA. Se vuoi che Google effettui e gestisca il test CAPTCHA, indirizza l'utente a https://www.google.com/accounts/DisplayUnlockCaptcha?service=blogger
(anziché all'URL di gestione del CAPTCHA fornito nella documentazione di ClientLogin).
Recupero di un elenco di blog
L'API di dati di Blogger fornisce un feed che elenca i blog per un determinato utente; tale feed è noto come "metafeed".
Il seguente codice campione utilizza un oggetto Service
autenticato per recuperare il metafeed e quindi stampa il titolo di ogni 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
. Questo è l'URL
del metafeed predefinito, che restituisce un elenco di blog per l'utente attualmente autenticato.
Per accedere a un feed per un altro utente, puoi inserire l'ID dell'utente al posto di
default
nell'URL del metafeed. L'ID dell'utente è la stringa di cifre
alla fine dell'URL del profilo dell'utente.
Creare post
L'API Blogger Data ti consente di creare e pubblicare nuove voci di blog e di creare bozze di voci.
Tutti gli esempi riportati di seguito presuppongono che tu abbia un oggetto Service
autenticato.
Nota: l'impostazione di un autore personalizzato per i post al momento non è supportata. Tutti i nuovi post appariranno come se fossero stati creati dall'utente attualmente autenticato.
Pubblicare un post del blog
Puoi utilizzare la libreria client .NET per pubblicare nuove voci di blog.
Innanzitutto, crea un oggetto AtomEntry
per rappresentare il post del blog.
Dopodiché 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
prende l'URL post del servizio come parametro.
Il metodo restituisce quindi la voce così com'era memorizzata da Blogger. La voce restituita è la stessa che hai inviato, ma contiene anche vari elementi aggiunti da Blogger, ad esempio un ID post.
Se per qualche motivo la tua richiesta non va a buon fine, Blogger potrebbe restituire un codice di stato diverso. Per informazioni sui codici di stato, consulta il documento di riferimento del protocollo dell'API Google Data.
Creare una bozza di post del blog
Le bozze dei post vengono create come i post pubblici, ma devi impostare
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);
Per trasformare una bozza di un post del blog esistente in un post pubblicato, recupera la bozza del post, imposta l'attributo bozza su false e aggiorna il post. Il recupero e l'aggiornamento dei post verranno trattati nelle due sezioni successive.
Recupero di post
Le seguenti sezioni descrivono come recuperare un elenco di post di blog, con e senza parametri di ricerca.
Puoi eseguire query su un feed pubblico di Blogger senza autenticazione. Pertanto, non è necessario impostare 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 del 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 Blogger Data ti consente di richiedere un insieme di voci che corrispondono a criteri specificati, come richiedere post del blog pubblicati o aggiornati in un determinato intervallo di date. Per farlo, devi creare un oggetto FeedQuery
e passarlo al
metodo Service.Query()
.
Ad esempio, per inviare una query sull'intervallo di date, imposta i membri MinPublication
e MaxPublication
dell'oggetto FeedQuery
.
Il seguente snippet di codice stampa il titolo di ogni 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); }
Nota che l'oggetto FeedQuery
viene creato con lo stesso URL del feed post usato per recuperare i post.
L'API di dati di Blogger supporta i seguenti parametri di query:
- alt
- Il tipo di feed da restituire, ad esempio
atom
(il valore predefinito) orss
. - /category
- Specifica le categorie (note anche come etichette) per filtrare i risultati del feed. Ad esempio,
http://www.blogger.com/feeds/blogID/posts/default/-/Fritz/Laurie
restituisce voci con entrambe le etichetteFritz
eLaurie
. - max-results
- Il numero massimo di voci da restituire.
- ordina
- L'ordine in cui restituire le voci, come
lastmodified
(valore predefinito),starttime
oupdated
. - min pubblicati, max pubblicati
- I limiti relativi alle date di pubblicazione delle voci.
- start-index
- L'indice in base 1 del primo risultato da recuperare (per il paging).
- aggiornato-min, aggiornato-max
- I limiti relativi alle date di aggiornamento delle voci. Questi parametri di query vengono ignorati a meno che il parametro
orderby
non sia impostato suupdated
.
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 innanzitutto recuperare la voce da aggiornare, quindi modificarla e infine inviarla a Blogger utilizzando il metodo Update()
della voce. Il seguente snippet di codice modifica il titolo di una voce di blog, nell'ipotesi che tu abbia già recuperato la voce dal server.
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 AtomEntry
contenente l'intero post appena aggiornato. Per aggiornare altre proprietà, è sufficiente impostarle 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
esistente, in questo modo:
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 (non è disponibile nell'interfaccia web).
Creazione di commenti
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: l'impostazione di un autore personalizzato per i commenti non è al momento supportata. Tutti i nuovi commenti verranno visualizzati come se fossero stati creati dall'utente attualmente autenticato.
Recupero dei commenti
Puoi recuperare i commenti per un determinato post dall'URL del feed dei commenti del post:
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); } } }
Oppure puoi ottenere i commenti da tutti i post utilizzando l'URL del feed dei commenti del blog:
http://www.blogger.com/feeds/blogID/comments/default
Eliminazione dei commenti in corso...
Per eliminare un commento, chiama il metodo Delete()
su un oggetto AtomEntry
commento esistente come questo:
static void DeleteComment(AtomEntry commentEntry) { if (commentEntry != null) { // Delete the comment. commentEntry.Delete(); } }