Wichtig: Dies ist eine alte Version dieser Seite. Die aktuelle Version finden Sie über die Links in der linken Navigationsleiste.
Mit der Blogger Data API können Clientanwendungen Blogger-Inhalte in Form von Google Data API-Feeds abrufen und aktualisieren.
Ihre Clientanwendung kann die Blogger Data API verwenden, um neue Blogposts zu erstellen, vorhandene Blogposts zu bearbeiten oder zu löschen und nach Blogposts zu suchen, die bestimmten Kriterien entsprechen.
Neben Informationen zu den Funktionen der Blogger Data API enthält dieses Dokument auch Beispiele für grundlegende Data API-Interaktionen mit der .NET-Clientbibliothek. Weitere Informationen zum zugrunde liegenden Protokoll, das in der Bibliothek verwendet wird, finden Sie im Abschnitt zum Protokoll in diesem Entwicklerleitfaden.
Inhalt
Zielgruppe
Dieses Dokument richtet sich an Programmierer, die .NET-Clientanwendungen schreiben möchten, die mit Blogger interagieren können.
In diesem Dokument wird davon ausgegangen, dass Sie mit den allgemeinen Ideen hinter dem Google Data APIs-Protokoll vertraut sind.
Referenzinformationen zu den Klassen und Methoden der Clientbibliothek finden Sie in der API-Referenz zur .NET-Clientbibliothek. Allgemeine Informationen zur Blogger Data API finden Sie im Protokollreferenzleitfaden.
Erste Schritte
Hilfe zum Einrichten der Clientbibliothek finden Sie im Startleitfaden.
Zur Verwendung der .NET-Clientbibliothek benötigen Sie die .NET 1.1-Laufzeit. Außerdem sollten Sie in allen Patches auf dem neuesten Stand sein. Nachdem Sie die Clientbibliothek heruntergeladen haben, finden Sie die erforderlichen DLLs im Unterverzeichnis lib/Release
der Distribution.
Blogger-Konto erstellen
Du kannst dich auch für ein Blogger-Konto registrieren. Blogger verwendet Google-Konten. Wenn Sie also bereits ein Google-Konto haben, müssen Sie nichts weiter tun.
Beispielcode ausführen
Ein voll funktionsfähiger Beispielclient, der den gesamten in diesem Dokument gezeigten Beispielcode enthält, ist im .NET-Clientbibliotheksprojekt verfügbar. Das Beispiel befindet sich unter /trunk/clients/cs/samples/blogger/ConsoleSample.cs auf dem Tab „Quelle“ des SVN-Repositorys.
Aktualisieren Sie vor dem Kompilieren und Ausführen dieses Beispiels die Werte von username
, password
, blogName
und postId
mit den entsprechenden Werten. Die Werte username
und password
stellen die Anmeldedaten dar, die für die Anmeldung in Blogger verwendet werden. Der Wert blogName
ist der Anfang der blogspot-URL deines Blogs.
Der Beispielclient führt im angegebenen Blog mehrere Vorgänge aus, um die Verwendung der Blogger Data API zu demonstrieren.
Sie benötigen die folgenden using
-Anweisungen, um die Beispiele in diesem Dokument in Ihrem eigenen Code zu kompilieren:
using Google.GData.Client; using System.Net; using System.Xml; using System.Text.RegularExpressions;
Authentifizierung beim Blogger-Dienst
Mit der Blogger Data API können Sie sowohl auf öffentliche als auch auf private Feeds zugreifen. Für öffentliche Feeds ist keine Authentifizierung erforderlich, sie sind aber schreibgeschützt. Wenn du Blogs ändern möchtest, muss sich dein Client authentifizieren, bevor du private Feeds anfordern kannst. Für die Authentifizierung gibt es zwei Möglichkeiten: die AuthSub-Proxyauthentifizierung oder die ClientLogin-Authentifizierung mit Nutzername und Passwort.
Weitere Informationen zur Authentifizierung mit Google Data APIs im Allgemeinen finden Sie in der Authentifizierungsdokumentation.
AuthSub-Proxy-Authentifizierung
Die AuthSub-Proxy-Authentifizierung wird von Webanwendungen verwendet, die ihre Nutzer bei Google-Konten authentifizieren müssen. Der Websitebetreiber und der Clientcode haben keinen Zugriff auf den Nutzernamen und das Passwort für den Blogger-Nutzer. Stattdessen erhält der Client spezielle AuthSub-Tokens, die es dem Client ermöglichen, im Namen eines bestimmten Nutzers zu handeln. Weitere Informationen finden Sie in der AuthSub-Dokumentation.
Wenn ein Nutzer Ihre Anwendung zum ersten Mal aufruft, wurde er noch nicht authentifiziert. In diesem Fall musst du einige Informationen und einen Link anzeigen, der den Nutzer zu einer Google-Seite weiterleitet, damit deine Zugriffsanfrage für seine Blogs authentifiziert werden kann.
Angenommen, auf Ihrer Seite ist der folgende ASP-Hyperlink definiert:
<asp:HyperLink ID="GotoAuthSubLink" runat="server"/>
Führen Sie dann einen .NET-Clientbibliotheksaufruf aus, um die AuthSubRequest-URL für Ihre Anwendung zu erstellen:
GotoAuthSubLink.Text = "Login to your Google Account"; GotoAuthSubLink.NavigateUrl = AuthSubUtil.getRequestUrl("http://www.example.com/RetrieveToken", "http://www.blogger.com/feeds/", false, true);
Die Methode getRequestUrl
verwendet die folgenden Parameter (entsprechend den Abfrageparametern, die vom AuthSubRequest-Handler verwendet werden):
- Weiter
- Die URL der Seite, auf die Google den Nutzer nach der Authentifizierung weiterleiten soll.
- Bereich
- Gibt an, dass die Anwendung ein Token für den Zugriff auf Blogger-Feeds anfordert. Der zu verwendende Bereichsstring ist
http://www.blogger.com/feeds/
(natürlich URL-codiert). - geschützt?
- Gibt an, ob der Client ein sicheres Token anfordert.
- session
- Gibt an, ob das zurückgegebene Token gegen ein Mehrzwecktoken (Sitzungsversion) eingetauscht werden kann.
Das obige Beispiel zeigt einen Aufruf, der kein sicheres Token anfordert (der Wert von secure
ist false
). Die resultierende Anfrage-URL könnte so aussehen:
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
Der Nutzer folgt dem Link zur Google-Website und authentifiziert sich für sein Google-Konto.
Nach der Authentifizierung des Nutzers werden sie vom AuthSub-System an die URL weitergeleitet, die Sie im Abfrageparameter next
der AuthSubRequest-URL angegeben haben. Das AuthSub-System hängt als Wert des Abfrageparameters token
ein Authentifizierungstoken an diese URL an. Daher kann auf das Token als Variable im Objekt Request.QueryString
der ASP-Seite zugegriffen werden. Der Nutzer wird zu einer URL weitergeleitet, die so aussieht:
http://www.example.com/RetrieveToken?token=yourAuthToken
Dieser Tokenwert stellt ein Einweg-Token für die einmalige Verwendung dar. Da in diesem Beispiel session = true
angegeben wurde, kann dieses Token so gegen ein AuthSub-Sitzungstoken ausgetauscht werden:
SessionsessionToken = AuthSubUtil.exchangeForSessionToken(Request.QueryStringtoken, null);
Das heißt, Sie geben Ihr einmaliges Token zusammen mit null
(für den nicht registrierten Modus) oder einem privaten Schlüssel (für den registrierten Modus) an die Methode exchangeForSessionToken
weiter und die AuthSub-Schnittstelle gibt ein Sitzungstoken zurück. Weitere Informationen zu registrierten Anwendungen und privaten Schlüsseln finden Sie in der AuthSub-Dokumentation im Abschnitt Signierungsanfragen.
Ihre Anwendung kann dann den Wert des Sitzungstokens bei nachfolgenden Interaktionen mit Blogger verwenden. So teilen Sie der .NET-Clientbibliothek mit jeder Anfrage automatisch, dass der Autorisierungsheader mit dem Sitzungstoken gesendet wird:
GAuthSubRequestFactory authFactory = new GAuthSubRequestFactory("blogger", "BloggerSampleApp"); authFactory.Token = SessionsessionToken.ToString(); Service service = new Service(authFactory.ApplicationName); service.RequestFactory = authFactory;
Authentifizierung mit Nutzername/Passwort für ClientLogin
Verwenden Sie die ClientLogin-Authentifizierung, wenn Ihr Client ein eigenständiger, einzelner Nutzerclient ist, z. B. eine Desktopanwendung. Legen Sie die Anmeldedaten für Ihr Dienstobjekt so fest:
Service service = new Service("blogger", "exampleCo-exampleApp-1"); service.Credentials = new GDataCredentials("user@example.com", "secretPassword"); GDataGAuthRequestFactory factory = (GDataGAuthRequestFactory) service.RequestFactory; factory.AccountType = "GOOGLE";
Im Snippet oben geben wir zwei Parameter an den Konstruktor Service
weiter. Der erste Parameter ist der Name des Dienstes, mit dem Sie interagieren möchten. Der zweite Parameter ist der Name unserer Anwendung im Format companyName-applicationName-versionID. Außerdem haben wir festgelegt, dass Service.RequestFactory
nur den Kontotyp GOOGLE
verwendet, um G Suite-Nutzern die richtige Authentifizierung zu ermöglichen.
Weitere Informationen zur ClientLogin-Authentifizierung, einschließlich Beispielanfragen und -antworten, finden Sie in der Dokumentation Authentifizierung für installierte Anwendungen.
Hinweis: Verwenden Sie für alle Anfragen in einer bestimmten Sitzung dasselbe Token. Erhalten Sie nicht für jede Blogger-Anfrage ein neues Token.
Hinweis: Wie in der ClientLogin-Dokumentation beschrieben, schlägt die Authentifizierungsanfrage möglicherweise fehl und fordert ein CAPTCHA an. Wenn Google die CAPTCHA-Abfrage ausstellen und verarbeiten soll, leite den Nutzer an https://www.google.com/accounts/DisplayUnlockCaptcha?service=blogger
weiter anstatt zur in der ClientLogin-Dokumentation angegebenen CAPTCHA-Verarbeitungs-URL.
Liste von Blogs abrufen
Die Blogger Data API bietet einen Feed, in dem die Blogs eines bestimmten Nutzers aufgelistet werden. Dieser Feed wird als Metametafeed bezeichnet.
Im folgenden Beispielcode wird ein authentifiziertes Service
-Objekt verwendet, um den Metafeed abzurufen. Anschließend wird der Titel jedes Blogs gedruckt.
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); } }
Notieren Sie sich die von der Methode getFeed
verwendete URL. Dies ist die Standard-Metafeed-URL. Sie gibt eine Liste von Blogs für den aktuell authentifizierten Nutzer zurück.
Um auf einen Feed für einen anderen Nutzer zuzugreifen, können Sie die ID des Nutzers anstelle von default
in der Meta-Feed-URL angeben. Die ID des Nutzers ist die Ziffernfolge am Ende der Profil-URL des Nutzers.
Beiträge erstellen
Mit der Blogger Data API können Sie sowohl neue Blogeinträge als auch Entwürfe erstellen und veröffentlichen.
In den folgenden Beispielen wird davon ausgegangen, dass Sie ein authentifiziertes Service
-Objekt haben.
Hinweis: Das Festlegen eines benutzerdefinierten Autors für Beiträge wird derzeit nicht unterstützt. Alle neuen Beiträge sehen so aus, als wären sie vom derzeit authentifizierten Nutzer erstellt worden.
Blogpost veröffentlichen
Sie können die .NET-Clientbibliothek verwenden, um neue Blogeinträge zu veröffentlichen.
Erstelle zuerst ein AtomEntry
-Objekt, das den Blogpost darstellt.
Anschließend können Sie den Titel, den Inhalt und andere Attribute des Blogposts festlegen.
Fügen Sie schließlich den Beitrag mit dem Objekt Service
ein. Hier ein Beispiel für die Veröffentlichung eines neuen Blogposts:
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);
Die Methode Insert
verwendet die Beitrags-URL des Dienstes als Parameter.
Die Methode gibt dann den Eintrag so zurück, wie er in Blogger gespeichert wurde. Der zurückgegebene Eintrag ist der gleiche, den Sie gesendet haben, er enthält aber auch verschiedene von Blogger hinzugefügte Elemente wie eine Post-ID.
Wenn Ihre Anfrage aus irgendeinem Grund fehlschlägt, gibt Blogger möglicherweise einen anderen Statuscode zurück. Informationen zu den Statuscodes finden Sie im Referenzdokument zum Google Data API-Protokoll.
Blogpostentwurf erstellen
Entwürfe werden auf die gleiche Weise wie öffentliche Beiträge erstellt. Sie müssen jedoch das Attribut draft
des Objekts AtomEntry
festlegen. Der obige Blogpost könnte durch Hinzufügen der hervorgehobenen Zeile als Entwurf erstellt werden:
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);
Sie können einen vorhandenen Blogpost in einen veröffentlichten Beitrag umwandeln. Rufen Sie dazu den Entwurfsbeitrag ab, setzen Sie das Entwurfsattribut auf „false“ und aktualisieren Sie dann den Beitrag. In den nächsten beiden Abschnitten erfahren Sie, wie Sie Beiträge abrufen und aktualisieren.
Beiträge werden abgerufen
In den folgenden Abschnitten wird beschrieben, wie Sie eine Liste von Blogposts mit und ohne Suchparameter abrufen.
Sie können einen öffentlichen Blogger-Feed ohne Authentifizierung abfragen. Sie müssen daher vor dem Abrufen von Beiträgen aus einem öffentlichen Blog keine Anmeldedaten festlegen oder eine AuthSub-Authentifizierung durchführen.
Alle Blogposts werden abgerufen
Um die Posts des Nutzers abzurufen, rufe dieselbe getFeed
-Methode auf, die zum Abrufen des Blog-Metafeeds verwendet wird. Dieses Mal senden Sie jedoch die Blogpost-Feed-URL:
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); }
Beiträge mit Suchparametern abrufen
Mit der Blogger Data API können Sie eine Reihe von Einträgen anfordern, die bestimmten Kriterien entsprechen, z. B. das Anfordern von Blogposts, die in einem bestimmten Zeitraum veröffentlicht oder aktualisiert wurden. Erstellen Sie dazu ein FeedQuery
-Objekt und übergeben Sie es an die Methode Service.Query()
.
Wenn Sie beispielsweise eine Zeitraumabfrage senden möchten, legen Sie die Mitglieder MinPublication
und MaxPublication
des Objekts FeedQuery
fest.
Das folgende Code-Snippet gibt den Titel jedes Blogposts aus, der zwischen dem angegebenen Start- und Enddatum veröffentlicht wurde:
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); }
Das FeedQuery
-Objekt wird mit derselben Beitrags-URL erstellt, die zum Abrufen von Beiträgen verwendet wurde.
Die Blogger Data API unterstützt die folgenden Abfrageparameter:
- alt
- Der Feedtyp, der zurückgegeben werden soll, z. B.
atom
(Standardeinstellung) oderrss
. - /category
- Geben Sie Kategorien (auch Labels) an, um die Feedergebnisse zu filtern.
http://www.blogger.com/feeds/blogID/posts/default/-/Fritz/Laurie
gibt beispielsweise Einträge mit den LabelsFritz
undLaurie
zurück. - Max. Ergebnisse
- Die maximale Anzahl der Einträge, die zurückgegeben werden sollen.
- Orderby
- Die Reihenfolge, in der Einträge zurückgegeben werden, z. B.
lastmodified
(Standardeinstellung),starttime
oderupdated
. - Veröffentlicht-Min., veröffentlicht-max
- Die Grenzen des Veröffentlichungsdatums des Eintrags.
- Startindex
- Der 1-basierte Index des ersten abzurufenden Ergebnisses (für die Seitenordnung).
- updated-min, updated-max
- Die Grenzen für die Datumsaktualisierung. Diese Suchparameter werden ignoriert, sofern der Parameter
orderby
nicht aufupdated
gesetzt ist.
Weitere Informationen zu Suchparametern findest du im Referenzleitfaden für die Blogger Data API und im Referenzhandbuch für Google Data APIs.
Beiträge werden aktualisiert
Zum Aktualisieren eines vorhandenen Blogposts rufen Sie zuerst den Eintrag ab, den Sie aktualisieren möchten. Anschließend ändern Sie ihn und senden ihn dann an Blogger. Dazu verwenden Sie die Methode Update()
des Eintrags. Das folgende Code-Snippet ändert den Titel eines Blogeintrags unter der Annahme, dass du den Eintrag bereits vom Server abgerufen hast.
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; }
Der obige Code gibt ein AtomEntry
zurück, das den gesamten aktualisierten Beitrag enthält. Wenn Sie andere Attribute aktualisieren möchten, legen Sie diese einfach im AtomEntry
-Objekt fest, bevor Sie Update()
aufrufen.
Hinweis: Das Ändern von mit Beiträgen verknüpften Autorendaten wird derzeit nicht unterstützt.
Beiträge löschen
Um einen Beitrag zu löschen, rufen Sie die Methode Delete
für ein vorhandenes AtomEntry
-Objekt so auf:
static void DeleteEntry(AtomEntry toDelete) { // Delete the edited entry if (toDelete != null) { toDelete.Delete(); } }
Kommentare
Mit der Blogger Data API können Sie Kommentare erstellen, abrufen und löschen. Das Aktualisieren von Kommentaren wird weder unterstützt noch in der Weboberfläche verfügbar.
Kommentare erstellen
Wenn Sie einen Kommentar posten möchten, erstellen Sie ein AtomEntry
-Objekt und fügen Sie es so ein:
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);
Hinweis: Derzeit können Sie in einem Blog nur Kommentare veröffentlichen, deren Inhaber der authentifizierte Nutzer ist.
Hinweis: Das Festlegen eines benutzerdefinierten Autors für Kommentare wird derzeit nicht unterstützt. Alle neuen Kommentare werden so angezeigt, als wären sie vom derzeit authentifizierten Nutzer erstellt worden.
Kommentare werden abgerufen
So kannst du die Kommentare für einen bestimmten Beitrag über die Feed-URL des Beitrags abrufen:
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); } } }
Du kannst auch die Kommentare zu allen Beiträgen über die Kommentar-Feed-URL des Blogs abrufen:
http://www.blogger.com/feeds/blogID/comments/default
Kommentare löschen
Rufen Sie zum Löschen eines Kommentars die Methode Delete()
für ein vorhandenes Kommentarobjekt AtomEntry
auf:
static void DeleteComment(AtomEntry commentEntry) { if (commentEntry != null) { // Delete the comment. commentEntry.Delete(); } }