Entwicklerhandbuch: .NET

Wichtig: Die Unterstützung der Google Data API 2.0 wird am 30. September 2024 eingestellt. Aktualisieren Sie Ihre Anwendungen, die auf v2.0 von Google basieren, damit die Funktionalität weiterhin gewährleistet ist. Data API auf die neueste API-Version zu aktualisieren. Die aktuelle Version erhalten Sie über die Links in der Navigationsleiste auf der linken Seite. Hinweis: Einige GET-Anfragen (z. B. zu Einträgen) werden weiterhin als Feed-URLs unterstützt. Es gibt jedoch geringfügige Unterschiede im Verhalten. Ausführliche Informationen finden Sie in der Dokumentation in der Blogger-Hilfe.

Mit der Blogger Data API können Client-Anwendungen Blogger-Inhalte aufrufen und aktualisieren. in Form von Google Data API-Feeds.

Ihre Clientanwendung kann die Blogger Data API verwenden, um neue Blogbeiträge zu erstellen, vorhandene Blogbeiträge zu bearbeiten oder zu löschen und nach Blogbeiträgen zu suchen, die bestimmten Kriterien entsprechen.

Zusätzlich zu einigen Hintergrundinformationen zu den Funktionen von Blogger Data API enthält, enthält dieses Dokument Beispiele für grundlegende Data API-Interaktionen mithilfe von der .NET-Clientbibliothek Weitere Informationen zum zugrunde liegenden Protokoll, das von der Bibliothek verwendet wird, finden Sie im Abschnitt zum Protokoll dieses Entwicklerhandbuchs.

Inhalt

Zielgruppe

Dieses Dokument richtet sich an Programmierer, die .NET-Client Anwendungen, die mit Blogger interagieren können.

In diesem Dokument wird davon ausgegangen, dass Sie mit den allgemeinen Konzepten hinter den Google Data APIs vertraut sind. Protokoll.

Referenzinformationen zu den Klassen und Methoden der Clientbibliothek finden Sie in der API-Referenz der .NET-Clientbibliothek. Allgemeine Referenzinformationen zur Blogger Data API finden Sie im Leitfaden zu Protokollen.

Erste Schritte

Informationen zum Einrichten der Clientbibliothek finden Sie im Leitfaden für den Einstieg.

Zur Verwendung der .NET-Clientbibliothek benötigen Sie die .NET 1.1-Laufzeit. sollten auch auf allen Patches aktuell sein. Nachdem du die Clientbibliothek heruntergeladen hast, findest du die erforderlichen DLLs im Unterverzeichnis lib/Release der Distribution.

Erstellen eines Blogger-Kontos

Sie können sich für ein Blogger-Konto zu Testzwecken. Blogger verwendet Google-Konten. Wenn Sie also bereits ein Google-Konto haben, sind Sie startklar.

Codebeispiel ausführen

Ein voll funktionsfähiger Beispielclient mit dem gesamten Beispielcode, der in diesem ist im Projekt der .NET-Clientbibliothek verfügbar. Die Stichprobe befindet sich unter /trunk/clients/cs/samples/blogger/ConsoleSample.cs auf dem Tab „Quelle“ des SVN-Repositorys.

Bevor Sie dieses Beispiel kompilieren und ausführen, aktualisieren Sie die Werte der username, password, blogName und postId durch die entsprechenden Werte. Die username und password-Werte stehen für die Anmeldedaten, die für die Anmeldung verwendet werden. Blogger Der Wert blogName gibt den Beginn des Blogspots Ihres Blogs an URL

Der Beispielclient führt für den angegebenen Blog mehrere Vorgänge aus, die Verwendung der Blogger Data API demonstrieren.

Um die Beispiele in diesem Dokument zu Ihrem eigenen Code zu kompilieren, benötigen Sie die folgende using-Anweisungen:

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

Beim Blogger-Dienst authentifizieren

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 jedoch nur lesbar. Wenn Sie Blogs ändern möchten, muss sich Ihr Kunde vor dem Anfordern von private Feeds. Für die Authentifizierung gibt es zwei Möglichkeiten: die AuthSub-Proxy-Authentifizierung oder die ClientLogin-Authentifizierung mit Nutzername/Passwort.

Weitere Informationen zur Authentifizierung mit Google Data APIs finden Sie in der Authentifizierungsdokumentation.

AuthSub-Proxy-Authentifizierung

Die AuthSub-Proxy-Authentifizierung wird von Webanwendungen verwendet, die ihre Nutzer in Google-Konten authentifizieren müssen. Websitebetreiber und die Kundin oder den Kunden keinen Zugriff auf den Nutzernamen und das Passwort für den Blogger-Nutzer hat; Der Client erhält stattdessen spezielle AuthSub-Tokens, mit denen er Aktionen ausführen kann, für einen bestimmten Nutzer. Weitere Informationen finden Sie in der AuthSub-Dokumentation.

Wenn ein Nutzer Ihre Anwendung zum ersten Mal aufruft, hat er noch nicht authentifiziert. In diesem Fall müssen Sie einige Informationen und einen Link anzeigen, über den der Nutzer zu einer Google-Seite weitergeleitet wird, um Ihre Anfrage auf Zugriff auf seine Blogs zu authentifizieren.

Angenommen, auf Ihrer Seite ist der folgende ASP-Hyperlink definiert:

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

Rufen Sie dann eine .NET-Clientbibliothek auf, 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 (entspricht 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).
sicher
Gibt an, ob der Client ein sicheres Token anfordert.
Sitzung
Gibt an, ob das zurückgegebene Token gegen ein Mehrfachnutzungstoken (Sitzungstoken) ausgetauscht werden kann.

Das obige Beispiel zeigt einen Aufruf, bei dem kein sicheres Token angefordert wird (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 Konto.

Nach der Authentifizierung leitet das AuthSub-System den Nutzer an die URL weiter, die Sie im Abfrageparameter next der AuthSubRequest-URL angegeben haben. Das AuthSub-System hängt ein Authentifizierungs-Token an diese URL an, da das Attribut Wert des Abfrageparameters token. Daher ist das Token im Request.QueryString-Objekt der ASP-Seite als Variable zugänglich. Der Nutzer wird zu einer URL weitergeleitet, die so aussieht:

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

Dieser Tokenwert stellt ein AuthSub-Token zur einmaligen Verwendung dar. Da in diesem Beispiel session = true angegeben wurde, kann dieses Token so gegen ein AuthSub-Sitzungstoken eingetauscht werden:

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

Sie übergeben also Ihr Einmaltoken zusammen mit null (für den nicht registrierten Modus) oder einem privaten Schlüssel (für den registrierten Modus) an die exchangeForSessionToken-Methode. Die AuthSub-Benutzeroberfläche gibt dann ein Sitzungstoken zurück. Weitere Informationen zu registrierten Anwendungen und private Schlüssel finden Sie im Abschnitt Signierungsanfragen der AuthSub-Dokumentation.

Ihre Anwendung kann dann den Wert des Sitzungstokens in den nachfolgenden Interaktionen mit Blogger. Um der .NET-Clientbibliothek mitzuteilen, den Authorization-Header (mit dem Sitzungstoken) bei jeder Anfrage Folgendes:

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

ClientLogin-Nutzername/Passwort-Authentifizierung

Verwenden Sie die ClientLogin-Authentifizierung, wenn Ihr Client ein eigenständiger Einzelnutzer ist. "installiert" (z. B. eine Desktop-Anwendung). Legen Sie die Anmeldedaten Ihres Dienstobjekts:

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 werden zwei Parameter an die Service übergeben. -Konstruktor. Der erste Parameter ist der Name des Dienstes, mit dem interagiert werden soll. mit. Der zweite Parameter ist der Name unserer Anwendung im Format companyName-applicationName-versionID. Außerdem haben wir für Service.RequestFactory festgelegt, dass nur ein GOOGLE-Kontotyp verwendet werden darf, um eine ordnungsgemäße Authentifizierung für G Suite-Nutzer 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 dasselbe Token für alle Anfragen in einer bestimmten Sitzung. Rufen Sie nicht für jede Blogger-Anfrage ein neues Token ab.

Hinweis: Wie in der ClientLogin-Dokumentation beschrieben, kann die Authentifizierungsanfrage fehlschlagen und eine CAPTCHA-Aufgabe anfordern. Wenn Google die CAPTCHA-Abfrage ausführen und verarbeiten soll, den Nutzer an https://www.google.com/accounts/DisplayUnlockCaptcha?service=blogger (anstatt der CAPTCHA-URL, die im ClientLogin angegeben wird, Dokumentation.

Liste der Blogs abrufen

Die Blogger Data API bietet einen Feed, in dem die Blogs eines bestimmten Nutzers aufgeführt sind. Dieser Feed wird als „Metafeed“ bezeichnet.

Im folgenden Beispielcode wird ein authentifiziertes Service-Objekt verwendet, um den Metafeed abzurufen. Anschließend wird der Titel jedes Blogs ausgegeben.

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 URL, die von der Methode getFeed verwendet wird. Das ist die Standard-Metafeed-URL. Sie gibt eine Liste der Blogs für den aktuell authentifizierten Nutzer zurück. Wenn Sie auf einen Feed für einen anderen Nutzer zugreifen möchten, können Sie die ID des Nutzers anstelle des default in der Metafeed-URL. Die ID des Nutzers ist die Ziffernfolge am Ende der Profil-URL des Nutzers.

Beiträge werden erstellt

Mit der Blogger Data API können Sie neue Blogbeiträge erstellen und veröffentlichen sowie Beitragsentwürfe erstellen.

In allen 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 werden so angezeigt, als wären sie von den aktuell authentifizierten Nutzer.

Blogposts veröffentlichen

Sie können die .NET-Clientbibliothek verwenden, um neue Blogeinträge zu veröffentlichen.

Erstellen Sie zuerst ein AtomEntry-Objekt für den Blogpost. Anschließend können Sie den Titel, den Inhalt und andere Attribute des Blogposts festlegen. Verwenden Sie abschließend das Service-Objekt, um den Beitrag einzufügen. Hier ist 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 Post-URL des Dienstes als Parameter. Anschließend gibt die Methode den Eintrag so zurück, wie er von Blogger gespeichert wurde. Der zurückgegebene Eintrag ist derselbe, den Sie gesendet haben, enthält aber auch verschiedene von Blogger hinzugefügte Elemente, z. B. eine Beitrags-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.

Entwurf eines Blogposts wird erstellt

Entwurfsbeiträge werden genauso erstellt wie öffentliche Beiträge. Sie müssen jedoch das draft-Attribut des AtomEntry-Objekts festlegen. Blog Beitrag oben könnte als Entwurf erstellt werden, indem die hervorgehobene Zeile hinzugefügt wird:

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-Entwurf in einen veröffentlichten Post umwandeln, indem Sie den Entwurf abrufen, das Attribut „draft“ auf „false“ setzen und den Post dann aktualisieren. In den nächsten beiden Abschnitten erfahren Sie, wie Sie Beiträge abrufen und aktualisieren.

Beiträge abrufen

In den folgenden Abschnitten wird beschrieben, wie Sie eine Liste von Blogbeiträgen mit und ohne Abfrageparameter abrufen.

Sie können einen öffentlichen Blogger-Feed ohne Authentifizierung abfragen. Daher müssen Sie keine Anmeldedaten festlegen oder eine AuthSub-Authentifizierung durchführen, bevor Sie Beiträge aus einem öffentlichen Blog abrufen.

Alle Blogbeiträge abrufen

Rufe zum Abrufen der Beiträge des Nutzers dieselbe getFeed-Methode auf, die auch zum Abrufen des Metafeeds des Blogs verwendet wurde. Sende diesmal jedoch die Feed-URL des Blogposts:

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 mithilfe von Abfrageparametern abrufen

Mit der Blogger Data API können Sie eine Reihe von Einträgen anfordern, Kriterien, z. B. die Anforderung von Blogposts, die an einem bestimmten Datum veröffentlicht oder aktualisiert wurden Bereich. Dazu erstellen Sie ein FeedQuery-Objekt und übergeben es an den Service.Query()-Methode.

Wenn Sie beispielsweise eine Abfrage für einen Zeitraum senden möchten, legen Sie die Mitglieder MinPublication und MaxPublication des Objekts FeedQuery fest. Das folgende Code-Snippet gibt den Titel jedes Blog-Posts aus, der zwischen die angegebene Start- und Endzeit:

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

Beachten Sie, dass das FeedQuery-Objekt mit derselben Post-Feed-URL erstellt wird, die zum Abrufen von Beiträgen verwendet wird.

Die Blogger Data API unterstützt die folgenden Abfrageparameter:

alt
Der Feedtyp, der zurückgegeben werden soll, z. B. atom (Standardeinstellung) oder rss.
/category
Geben Sie Kategorien (auch Labels genannt) an, um die Feedergebnisse zu filtern. Beispiel: http://www.blogger.com/feeds/blogID/posts/default/-/Fritz/Laurie gibt Einträge mit den Labels Fritz und Laurie zurück.
max-results
Die maximale Anzahl der zurückzugebenden Einträge.
orderby
Die Reihenfolge, in der Einträge zurückgegeben werden sollen, z. B. lastmodified (Standardeinstellung), starttime oder updated.
Publish-Min., Publish-Max.
Die Grenzen der Veröffentlichungsdaten des Eintrags.
start-index
Der Index (ab 1) des ersten Ergebnisses, das abgerufen werden soll (für die Paginierung).
updated-min., updated-max.
Die Grenzen bei Datumsangaben für die Aktualisierung von Einträgen. Diese Abfrageparameter werden ignoriert, es sei denn, der Parameter orderby ist auf updated gesetzt.

Weitere Informationen über Abfrageparameter finden Sie in der Blogger Data API-Referenz Leitfaden und die Google- Referenzhandbuch für Data APIs

Beiträge aktualisieren

Um einen vorhandenen Blogpost zu aktualisieren, rufen Sie zuerst den Eintrag ab, den Sie aktualisieren, ändern Sie ihn und senden ihn anschließend mithilfe der Methode Update()-Methode. Mit dem folgenden Code-Snippet wird der Titel eines Blogeintrag, vorausgesetzt, Sie haben den Eintrag bereits aus dem 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;
}

Der obige Code gibt eine AtomEntry zurück, die den gesamten neu aktualisierten Beitrag enthält. Wenn du andere Properties aktualisieren möchtest, musst du sie einfach im AtomEntry-Objekt festlegen, bevor du Update() aufrufst.

Hinweis: Wenn Sie die Autorendaten ändern, die mit Posts werden derzeit nicht unterstützt.

Beiträge löschen

Um einen Beitrag zu löschen, rufen Sie die Methode Delete für eine vorhandene AtomEntry-Objekts:

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 nicht unterstützt und ist auch nicht in der Weboberfläche verfügbar.

Kommentare erstellen

Wenn du einen Kommentar posten möchtest, erstelle ein AtomEntry-Objekt und füge 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 Kommentare nur an Personen ein Blog, der dem authentifizierten Nutzer gehört.

Hinweis: Das Festlegen eines benutzerdefinierten Autors für Kommentare ist wird derzeit nicht unterstützt. Alle neuen Kommentare werden so angezeigt, als wären sie von den aktuell authentifizierten Nutzer.

Kommentare werden abgerufen

Du kannst die Kommentare zu einem bestimmten Beitrag über die Kommentarfeed-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);
    }
  }
}

Sie können auch die Kommentare zu allen Posts über den Kommentarfeed des Blogs abrufen. URL:

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

Kommentare löschen

Wenn du einen Kommentar löschen möchtest, rufe die Methode Delete() für ein vorhandenes Kommentarobjekt AtomEntry auf:

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

Nach oben