デベロッパー ガイド: .NET

重要: 2024 年 9 月 30 日をもって、v2.0 Google Data API のサポートを終了します。 機能を引き続きご利用いただくためには、v2.0 の Google Data API を最新バージョンに更新します。 最新バージョンについては、左側のナビゲーション バーのリンクを使用してください。注: 一部の GET リクエスト(投稿の一覧表示など)は、引き続きフィードとしてサポートされますが、 動作に若干の違いがあります。 詳しくは、Blogger ヘルプのドキュメントをご覧ください。

Blogger Data API を使用すると、クライアント アプリケーションで Blogger の閲覧と更新を行うことができます Google Data API フィードの形式で作成します。

クライアント アプリケーションは Blogger Data API を使用して、新しいブログ投稿の作成、既存のブログ投稿の編集または削除、特定の条件に一致するブログ投稿のクエリを実行できます。

また、Blogger の機能に関する背景知識も提供し、 基本的な Data API の相互作用の例を紹介します。 .NET クライアント ライブラリライブラリで使用される基盤となるプロトコルの詳細については、このデベロッパー ガイドのプロトコル セクションをご覧ください。

目次

オーディエンス

このドキュメントは、Blogger とやり取りできる .NET クライアント アプリケーションを作成するプログラマを対象としています。

このドキュメントは、読者が Google Data API の背後にある一般的な概念を理解していることを前提としています。 プロトコルをご覧ください。

クライアント ライブラリで提供されるクラスとメソッドに関するリファレンス情報については、.NET クライアント ライブラリ API リファレンスをご覧ください。Blogger Data API の一般的なリファレンス情報については、プロトコル リファレンス ガイドをご覧ください。

スタートガイド

クライアント ライブラリの設定については、スタートガイドをご覧ください。

.NET クライアント ライブラリを使用するには、.NET 1.1 ランタイムが必要であり、 すべてのパッチで最新である必要があります。クライアント ライブラリをダウンロードすると、ディストリビューションの lib/Release サブディレクトリに、使用開始に必要な DLL が見つかります。

Blogger アカウントを作成する

ぜひ Blogger アカウントを使用します。Blogger は Google アカウントを使用しているため、すでに Google アカウントをお持ちの場合は、すぐにご利用いただけます。

サンプルコードの実行

ここに示すサンプルコードがすべて入った、正常に機能するサンプル クライアント .NET クライアント ライブラリ プロジェクトから入手できます。サンプルの場所: /trunk/clients/cs/samples/blogger/ConsoleSample.cs で、 SVN リポジトリの [ソース]タブで確認できます

このサンプルをコンパイルして実行する前に、usernamepasswordblogNamepostId の値を適切な値に更新します。username 値と password 値は、Blogger へのログインに使用される認証情報を表します。blogName 値は、ブログの googleblog の先頭になります。 URL。

サンプル クライアントは、指定されたブログに対していくつかのオペレーションを実行し、Blogger Data API の使用方法を示します。

このドキュメントのサンプルを独自のコードにコンパイルするには、 次の using ステートメント:

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

Blogger サービスへの認証

Blogger Data API を使用すると、公開フィードと限定公開フィードの両方にアクセスできます。公開フィードは認証を必要としませんが、読み取り専用です。ブログを変更する場合は、クライアントが限定公開フィードをリクエストする前に認証する必要があります。AuthSub プロキシ認証または ClientLogin ユーザー名 / パスワード認証のいずれかの方法で認証できます。

Google Data API での認証の詳細については、認証のドキュメントをご覧ください。

AuthSub プロキシ認証

AuthSub プロキシ認証は、ユーザーの認証を必要とする 認証する必要があります。ウェブサイト運営者とクライアント コードは、Blogger ユーザーのユーザー名とパスワードにアクセスできません。代わりに、クライアントは、特定のユーザーに代わってクライアントが操作できるようにする特別な AuthSub トークンを取得します。詳細については、AuthSub のドキュメントをご覧ください。

ユーザーが初めてアプリケーションにアクセスした時点では、認証は行われていません。この場合は、ブログへのアクセス リクエストの認証を行う Google ページにユーザーを誘導する情報とリンクを表示する必要があります。

ページに次の ASP ハイパーリンクが定義されているとします。

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

次に、アプリケーションの AuthSubRequest URL を作成するために、次のように .NET クライアント ライブラリを呼び出します。

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

getRequestUrl メソッドは次のパラメータを受け取ります。 (AuthSubRequest ハンドラで使用されるクエリ パラメータに対応):

次へ
認証後にユーザーをリダイレクトするページの URL。
スコープ
アプリケーションが Blogger フィードにアクセスするためのトークンをリクエストしていることを示します。使用するスコープ文字列は http://www.blogger.com/feeds/ です(もちろん URL エンコードされています)。
安全
クライアントがセキュア トークンをリクエストしているかどうかを示します。
セッション
返されたトークンを複数回使用(セッション)トークンと交換できるかどうかを示します。

上記の例は、安全なトークンをリクエストしない呼び出しを示しています(secure の値は false です)。結果として生成されるリクエスト URL は次のようになります。

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

ユーザーが Google のサイトにリンクをたどり、Google アカウントで認証します。

ユーザーが認証されると、AuthSub システムによってユーザーは URL にリダイレクトされます。 AuthSubRequest の next クエリ パラメータで指定した URL。AuthSub システムは、この URL に認証トークンを token クエリ パラメータの値。したがって、このトークンは ASP ページの Request.QueryString で変数としてアクセスできます 渡されます。ユーザーは次のような URL にリダイレクトされます。

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

このトークン値は、1 回限りの AuthSub トークンを表します。この例では、session = true が指定されているため、このトークンは次のように AuthSub セッション トークンと交換できます。

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

つまり、1 回限りのトークンを exchangeForSessionToken メソッドに渡し、null(未登録モードの場合)または秘密鍵(登録済みモードの場合)を渡すと、AuthSub インターフェースがセッション トークンを返します。登録済みのアプリケーションと秘密鍵の詳細については、AuthSub のドキュメントのリクエストの署名セクションをご覧ください。

アプリケーションはこのセッション トークンの値を後続の やり取りできます。リクエストごとに(セッション トークンを含む)Authorization ヘッダーを自動的に送信するように .NET クライアント ライブラリに指示するには、次の操作を行います。

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

ClientLogin ユーザー名/パスワード認証

クライアントがスタンドアロンのシングルユーザーの「インストール済み」クライアント(デスクトップ アプリケーションなど)の場合は、ClientLogin 認証を使用します。次のように、Service オブジェクトの認証情報を設定します。

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

上のスニペットでは、2 つのパラメータを Service コンストラクタに渡しています。最初のパラメータは、やり取りするサービスの名前 できます。2 番目のパラメータは、companyName-applicationName-versionID 形式のアプリケーション名です。また、G Suite ユーザーの適切な認証を可能にするために、Service.RequestFactoryGOOGLE アカウント タイプのみを使用するように設定しています。

サンプルを含む ClientLogin 認証の詳細、 アプリケーションの詳細については、インストール済みの アプリケーションのドキュメントをご覧ください。

: 特定のセッション内のすべてのリクエストに同じトークンを使用します。Blogger リクエストごとに新しいトークンを取得しないでください。

: ClientLogin の 認証のリクエストが失敗して CAPTCHA が要求されることがあります。 説明します。CAPTCHA チャレンジの発行と処理を Google に任せる場合は、次のようにします。 ユーザーを https://www.google.com/accounts/DisplayUnlockCaptcha?service=blogger (ClientLogin で指定したキャプチャ処理 URL ではなく、 ドキュメントをご覧ください)。

ブログのリストの取得

Blogger Data API は、特定のユーザーのブログを一覧表示するフィードを提供します。このフィードは「メタフィード」と呼ばれます。

次のサンプルコードでは、認証済みの Service オブジェクトを使用してメタフィードを取得し、各ブログのタイトルを出力します。

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

getFeed メソッドで使用されている URL をメモします。これがデフォルトです メタフィードの URL現在認証されているユーザーのブログのリストを返します。 別のユーザーのフィードにアクセスするには、代わりにそのユーザーの ID を入力します。 メタフィード URL 内の default。ユーザーの ID は数字の文字列 ユーザーのプロフィール URL の末尾に表示されます。

投稿の作成

Blogger Data API を使用すると、新しいブログ投稿を作成して公開したり、投稿の下書きを作成したりできます。

以下のサンプルはすべて、認証された Service オブジェクト。

: 現在のところ、投稿のカスタム作成者は設定できません。新しい投稿はすべて、現在認証されているユーザーによって作成されたものとして表示されます。

ブログ投稿の公開

.NET クライアント ライブラリを使用して、新しいブログエントリを公開できます。

まず、ブログ投稿を表す AtomEntry オブジェクトを作成します。 次に、ブログ投稿のタイトル、コンテンツなどの属性を設定します。最後に、Service オブジェクトを使用して投稿を挿入します。新しいブログ投稿を公開する方法の例を次に示します。

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

Insert メソッドは、サービスの投稿 URL をパラメータとして受け取ります。その後、このメソッドは Blogger によって保存されたエントリを返します。返されるエントリは送信したエントリと同じですが、投稿 ID など、Blogger によって追加されたさまざまな要素も含まれます。

なんらかの理由でリクエストが失敗した場合、Blogger から別のステータス コードが返されることがあります。ステータス コードの詳細については、Google データ API プロトコル リファレンス ドキュメント

ブログ投稿の下書きを作成する

下書きの投稿は一般公開の投稿と同じ方法で作成されますが、 AtomEntry オブジェクトの draft 属性。ブログ 上記の投稿は、以下のハイライト表示された行を追加して下書きとして作成できます。

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

既存の下書きのブログ投稿を公開済み投稿にするには、下書き投稿を取得し、下書き属性を false に設定してから、投稿を更新します。投稿の取得と更新については、次の 2 つのセクションで説明します。

投稿の取得

以降のセクションでは、ブログ投稿を含む、ブログ投稿のリストを取得する方法について説明します。 クエリパラメータなしで指定できます

認証なしで Blogger の公開フィードにクエリを実行できます。したがって、 取得する前に認証情報の設定や AuthSub 認証を行う必要がない 公開ブログから投稿されたものです。

すべてのブログ投稿を取得する

ユーザーの投稿を取得するには、以前と同じ getFeed メソッドを呼び出します。 ブログのメタフィードを取得しますが、今回はブログ投稿フィードの 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);
}

クエリ パラメータを使用して投稿を取得する

Blogger Data API を使用すると、指定した条件に一致するエントリセットをリクエストできます。たとえば、特定の日付範囲に公開または更新されたブログ投稿をリクエストできます。そのためには、FeedQuery オブジェクトを作成して Service.Query() メソッドを使用します。

たとえば、期間クエリを送信するには、FeedQuery オブジェクトの MinPublication メンバーと MaxPublication メンバーを設定します。次のコード スニペットは、次の期間に公開された各ブログ投稿のタイトルを出力します。 開始時刻と終了時刻を

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

FeedQuery オブジェクトは、投稿の取得に使用するのと同じ投稿フィードの URL を使用して作成されています。

Blogger Data API では、次のクエリ パラメータがサポートされています。

alt
atom(デフォルト)や rss など、返されるフィードのタイプ。
/category
カテゴリ(ラベルとも呼ばれます)を指定して、フィード結果をフィルタします。たとえば、http://www.blogger.com/feeds/blogID/posts/default/-/Fritz/Laurie は、ラベル FritzLaurie の両方を含むエントリを返します。
max-results
返されるエントリの最大数。
orderby
lastmodified(デフォルト)、starttimeupdated など、エントリを返す順序。
publish-min、published-max
エントリの公開日の境界。
start-index
取得される最初の結果のインデックス(1 から始まる)(ページング用)。
update-min、updated-max
エントリの更新日の上限と下限。これらのクエリ パラメータは、orderby パラメータが updated に設定されていない限り無視されます。

クエリ パラメータの詳細については、Blogger Data API リファレンスをご覧ください。 ガイドGoogle Data API リファレンス ガイドをご覧ください。

投稿を更新しています

既存のブログ投稿を更新するには、まず目的のエントリを取得します。 更新してから編集し、エントリの Update() メソッドを使用します。次のコード スニペットでは、 エントリを取得済みであると仮定します。 あります。

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

上記のコードは、新しく更新された投稿全体を含む AtomEntry を返します。その他のプロパティを更新するには、 Update() を呼び出す前に AtomEntry オブジェクトを作成します。

: 投稿に関連付けられた作成者データを変更することは現在サポートされていません。

投稿を削除しています

投稿を削除するには、既存の AtomEntry オブジェクトで Delete メソッドを呼び出します。

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

コメント

Blogger Data API を使用すると、コメントの作成、取得、削除ができます。 コメントの更新はサポートされていません(ウェブでは利用できません) インターフェース)。

コメントの作成

コメントを投稿するには、AtomEntry オブジェクトを作成して、次のように挿入します。

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

: 現在のところ、コメントを投稿できるのは ブロックします。

: 現在のところ、コメントのカスタム作成者を設定することはできません。すべての新しいコメントは、 現在の認証済みユーザー。

コメントの取得

特定の投稿のコメントは、投稿のコメント フィード URL から取得できます。

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

または、ブログのコメント フィード URL を使用して、すべての投稿のコメントを取得することもできます。

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

コメントの削除

コメントを削除するには、既存のコメント AtomEntry オブジェクトで Delete() メソッドを呼び出します。

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

トップへ戻る