重要: v2.0 Google Data API のサポートは 2024 年 9 月 30 日に終了します。機能を引き続きご利用いただくためには、v2.0 の Google Data API を最新バージョンに更新します。 最新バージョンについては、左側のナビゲーション バーのリンクを使用してください。注: 一部の GET リクエスト(投稿の一覧表示など)は、引き続きフィードとしてサポートされますが、 動作に若干の違いがあります。 詳しくは、 Blogger ヘルプ ドキュメント
Blogger Data API を使用すると、クライアント アプリケーションで Blogger の閲覧と更新を行うことができます Google Data API フィードの形式で作成します。
クライアント アプリケーションは Blogger Data API を使用して、新しいブログ投稿の作成、既存のブログ投稿の編集または削除、特定の条件に一致するブログ投稿のクエリを実行できます。
このドキュメントでは、Blogger Data API の機能に関する背景情報に加えて、Java クライアント ライブラリを使用した Data API の基本的な操作の例を示します。ライブラリが使用する基盤となるプロトコルの詳細については、このデベロッパー ガイドのプロトコル セクションをご覧ください。
目次
オーディエンス
このドキュメントは、Blogger とやり取りできる Java クライアント アプリケーションを作成するプログラマーを対象としています。
このドキュメントは、Google Data APIs プロトコルの基本的な考え方を理解していることを前提としています。
Google Cloud コンソールで提供されているクラスとメソッドに関するリファレンス情報は、 クライアント ライブラリについては、Java クライアント ライブラリ API リファレンスをご覧ください。Blogger Data API に関する一般的なリファレンス情報については、プロトコル リファレンス ガイドをご覧ください。
スタートガイド
クライアント ライブラリの設定については、スタートガイドをご覧ください。
Java クライアント ライブラリには Java 1.5 が必要です。ダウンロードした
クライアント ライブラリをご覧ください。使用を開始するために必要なクラスは、
java/lib/gdataclient-1.0.jar
ファイル。
Blogger アカウントを作成する
ぜひ Blogger アカウントを使用します。Blogger は Google アカウントを使用しているため、すでに Google アカウントをお持ちの場合は、すぐにご利用いただけます。
サンプルコードの実行
ここに示すサンプルコードをすべて含む、正常に機能するサンプル クライアント
Java クライアント ライブラリ ディストリビューションの
ディレクトリ gdata/java/sample/blogger/BloggerClient.java
。ビルドと実行の手順は、同じディレクトリの README.txt
ファイルに含まれています。
サンプル クライアントは、指定されたブログに対していくつかのオペレーションを実行し、Blogger Data API の使用方法を示します。
このドキュメントのサンプルを独自のコードにコンパイルするには、次の import
ステートメントが必要です。
import com.google.gdata.client.*; import com.google.gdata.data.*; import com.google.gdata.util.*; import java.io.IOException; import java.net.URL;
Blogger サービスへの認証
Blogger Data API を使用すると、公開フィードと限定公開フィードの両方にアクセスできます。公開フィードには認証は必要ありませんが、読み取り専用です。もし 変更する場合は、リクエストする前にクライアントが認証を受ける必要があります。 非公開フィードです。OAuth 認証、AuthSub プロキシ認証、ClientLogin ユーザー名 / パスワード認証のいずれかの方法で認証できます。
Google Data API での認証の詳細については、認証のドキュメントをご覧ください。
このドキュメントの以降のセクションのサンプルのほとんどは、
認証済みの GoogleService
オブジェクト。
OAuth 認証
Java GData ライブラリを使用した OAuth 認証に関するドキュメントについては、 OAuth の Google Data Protocol クライアント ライブラリをご覧ください。
AuthSub プロキシ認証
AuthSub プロキシ認証は、Google アカウントのユーザーを認証する必要があるウェブ アプリケーションで使用されます。ウェブサイト運営者とクライアント コードは、Blogger ユーザーのユーザー名とパスワードにアクセスできません。代わりに、クライアントは、特定のユーザーに代わってクライアントが操作できるようにする特別な AuthSub トークンを取得します。詳しくは、AuthSub のドキュメントをご覧ください。
ユーザーが初めてアプリケーションにアクセスした時点では、認証は行われていません。この場合、いくつかの情報とリンクを表示する必要があります。 アクセスのリクエストを認証するためにユーザーを Google ページに誘導する できます。Java クライアント ライブラリには、Google ページの URL を生成する関数があります。以下のコードは、AuthSubRequest ページの URL を取得します。
String next = "http://www.example.com/welcome.html"; String scope = "http://www.blogger.com/feeds/"; boolean secure = false; boolean session = true; String authSubLogin = AuthSubUtil.getRequestUrl(next, scope, secure, session);
getRequestUrl
メソッドは次のパラメータを受け取ります。
(AuthSubRequest で使用されるクエリ パラメータに対応)
handler):
- 次へ
- 認証後に Google がユーザーをリダイレクトするページの 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%2Fwelcome.html
ユーザーは Google のサイトへのリンクに従って、Google 。
ユーザーが認証されると、AuthSub システムによってユーザーは URL にリダイレクトされます。
AuthSubRequest の next
クエリ パラメータで指定した
URL。AuthSub システムは、この URL に認証トークンを
token
クエリ パラメータの値。例:
http://www.example.com/welcome.html?token=yourAuthToken
このトークン値は、1 回限りの AuthSub トークンを表します。この例では、session = true
が指定されているため、次のようにして AuthSubSessionToken
サービスを呼び出して、このトークンを AuthSub セッション トークンと交換できます。ここで、urlFromAuthSub
は AuthSub がトークンを追加した URL です。
String token = AuthSubUtil.getTokenFromReply(urlFromAuthSub); String sessionToken = AuthSubUtil.exchangeForSessionToken(token, null);
つまり、1 回限りのトークンを exchangeForSessionToken
メソッドに渡し、null
(未登録モードの場合)または秘密鍵(登録済みモードの場合)を渡すと、AuthSub インターフェースがセッション トークンを返します。登録済みの
含まれている場合は、リクエストへの署名
をご覧ください。
アプリケーションはこのセッション トークンを後続のインタラクションで使用できるようになります。
。リクエストごとにセッション トークンを自動的に送信するように Java クライアント ライブラリに指示するには、GoogleService
オブジェクトの setAuthSubToken
メソッドを呼び出します。
GoogleService.setAuthSubToken(sessionToken, null);
その後、クライアント ライブラリは、すべてのリクエストとともにトークンを自動的に送信します。
ClientLogin ユーザー名/パスワード認証
クライアントがスタンドアロンのシングル ユーザーの場合は、ClientLogin 認証を使用する
「インストール」クライアント(デスクトップ アプリケーションなど)にインストールします。GoogleService
オブジェクトで setUserCredentials
メソッドを呼び出すだけで、Blogger とのその後のすべての操作が認証されます。
GoogleService myService = new GoogleService("blogger", "exampleCo-exampleApp-1"); myService.setUserCredentials("user@example.com", "secretPassword");
上記のスニペットでは、2 つのパラメータを
GoogleService
コンストラクタ。最初のパラメータは、操作するサービスの名前です。2 番目のパラメータは、companyName-applicationName-versionID 形式のアプリの名前です。
サンプルを含む ClientLogin 認証の詳細、 アプリケーションの詳細については、インストール済みの アプリケーションのドキュメントをご覧ください。
注: 同じトークンを あります。Blogger のリクエストごとに新しいトークンを取得しません。
注: ClientLogin の
認証のリクエストが失敗して CAPTCHA が要求されることがあります。
説明します。Google に CAPTCHA チャレンジの発行と処理を任せる場合は、ユーザーを https://www.google.com/accounts/DisplayUnlockCaptcha?service=blogger
にリダイレクトします(ClientLogin のドキュメントに記載されている CAPTCHA 処理 URL ではなく)。
ブログのリストの取得
Blogger Data API は、特定のサイトのブログを一覧表示するフィードを提供します。 user;「メタフィード」と呼ばれます
次のサンプルコードでは、認証済みの GoogleService
を使用しています。
オブジェクトでメタフィードを取得し、各ブログのタイトルを出力します。
public static void printUserBlogs(GoogleService myService) throws ServiceException, IOException { // Request the feed final URL feedUrl = new URL("http://www.blogger.com/feeds/default/blogs"); Feed resultFeed = myService.getFeed(feedUrl, Feed.class); // Print the results System.out.println(resultFeed.getTitle().getPlainText()); for (int i = 0; i < resultFeed.getEntries().size(); i++) { Entry entry = resultFeed.getEntries().get(i); System.out.println("\t" + entry.getTitle().getPlainText()); } }
getFeed
メソッドで使用されている URL をメモします。これがデフォルトです
メタフィードの URL現在認証されているユーザーのブログのリストを返します。
別のユーザーのフィードにアクセスするには、メタフィード URL の default
の代わりにユーザー ID を指定します。ユーザーの ID は、ユーザーのプロフィール URL の末尾にある数字の文字列です。
投稿の作成
Blogger Data API を使用すると、新しいブログ投稿を作成して公開したり、投稿の下書きを作成したりできます。
注: 投稿にカスタムの作成者を設定するには、 現在サポートされていませんすべての新しい投稿は、 現在の認証済みユーザー。
ブログ投稿を公開する
Java クライアント ライブラリを使用して、新しいブログエントリを公開できます。
まず、ブログ投稿を表す Entry
オブジェクトを作成します。次に、ブログ投稿のタイトル、コンテンツなどの属性を設定します。最後に、
GoogleService
オブジェクトを使用して投稿を挿入します。新しいブログ投稿を公開する方法の例を次に示します。
public static Entry createPost( GoogleService myService, String blogID, String title, String content, String userName) throws ServiceException, IOException { // Create the entry to insert Entry myEntry = new Entry(); myEntry.setTitle(new PlainTextConstruct(title)); myEntry.setContent(new PlainTextConstruct(content)); // Ask the service to insert the new entry URL postUrl = new URL("http://www.blogger.com/feeds/" + blogID + "/posts/default"); return myService.insert(postUrl, myEntry); }
insert
メソッドは、サービスの投稿 URL をパラメータとして受け取ります。その後、このメソッドは Blogger によって保存されたエントリを返します。エントリ
送信されたものと同じですが、さまざまな要素が追加されています
(投稿 ID など)を入力します。
なんらかの理由でリクエストが失敗した場合、Blogger から別のステータスが返されることがあります 説明します。ステータス コードの詳細については、Google データ API プロトコル リファレンス ドキュメント。
ブログ投稿の下書きを作成する
下書き投稿は公開投稿と同じ方法で作成されますが、Entry
オブジェクトの draft
属性を設定する必要があります。Google Chat では
上記のようなブログ投稿を下書きとして作成し、ハイライト表示された部分を
行:
public static Entry createPost(GoogleService myService, String blogId, String title, String content, String userName, Boolean isDraft) throws ServiceException, IOException { // Create the entry to insert Entry myEntry = new Entry(); myEntry.setTitle(new PlainTextConstruct(title)); myEntry.setContent(new PlainTextConstruct(content)); myEntry.setDraft(isDraft); // Ask the service to insert the new entry URL postUrl = new URL("http://www.blogger.com/feeds/" + blogID + "/posts/default"); return myService.insert(postUrl, myEntry); }
既存の下書きのブログ投稿を公開済みの投稿にするには、 そして、Draft 属性を false に設定して、 投稿します。投稿の取得と更新については、次の 2 つのセクションで説明します。
投稿の取得
以降のセクションでは、ブログ投稿を含む、ブログ投稿のリストを取得する方法について説明します。 クエリパラメータなしで指定できます
Blogger の公開フィードをクエリするには、認証は必要ありません。したがって、
setUserCredentials
メソッドの呼び出しや AuthSub の実行は不要
認証が必要です。
すべてのブログ投稿を取得する
ユーザーの投稿を取得するには、ブログのメタフィードの取得に使用した getFeed
メソッドを呼び出します。ただし、今回はブログ投稿フィードの URL を送信します。
public static void printAllPosts( GoogleService myService, String blogId) throws ServiceException, IOException { // Request the feed URL feedUrl = new URL("http://www.blogger.com/feeds/" + blogID + "/posts/default"); Feed resultFeed = myService.getFeed(feedUrl, Feed.class); // Print the results System.out.println(resultFeed.getTitle().getPlainText()); for (int i = 0; i < resultFeed.getEntries().size(); i++) { Entry entry = resultFeed.getEntries().get(i); System.out.println("\t" + entry.getTitle().getPlainText()); } System.out.println(); }
クエリ パラメータを使用して投稿を取得する
Blogger Data API を使用すると、指定した条件に一致するエントリセットをリクエストできます。たとえば、特定の日付範囲に公開または更新されたブログ投稿をリクエストできます。これを行うには、Query
オブジェクトを作成し、GoogleService.getQuery
メソッドに渡します。
たとえば、期間のクエリを送信するには、setPublishedMin
を使用します。
および setPublishedMax
オブジェクトの Query
メソッドを呼び出せます。次のコード スニペットは、指定された開始時間と終了時間の間に公開された各ブログ投稿のタイトルを出力します。
public static void printDateRangeQueryResults( GoogleService myService, String blogId, DateTime startTime, DateTime endTime) throws ServiceException, IOException { // Create query and submit a request URL feedUrl = new URL("http://www.blogger.com/feeds/" + blogID + "/posts/default"); Query myQuery = new Query(feedUrl); myQuery.setPublishedMin(startTime); myQuery.setPublishedMax(endTime); Feed resultFeed = myService.query(myQuery, Feed.class); // Print the results System.out.println(resultFeed.getTitle().getPlainText() + " posts between " + startTime + " and " + endTime); for (int i = 0; i < resultFeed.getEntries().size(); i++) { Entry entry = resultFeed.getEntries().get(i); System.out.println("\t" + entry.getTitle().getPlainText()); System.out.println("\t" + entry.getUpdated().toStringRfc822()); } System.out.println(); }
Query
オブジェクトは、投稿の取得に使用するのと同じ投稿フィードの URL を使用して作成されています。
Blogger Data API は、次の Query
メソッドをサポートしています。
- addCategoryFilter
- カテゴリ(ラベル)を指定して、フィード結果をフィルタリングします。たとえば、
http://www.blogger.com/feeds/blogID/posts/default/-/Fritz/Laurie
は、ラベルFritz
とLaurie
の両方を含むエントリを返します。 - setMaxResults
- 返されるエントリの最大数を設定します。
- setPublishedMin、setPublishedMax
- エントリの公開日の範囲を設定します。
- setStartIndex
- (ページング用に)最初に取得する結果の 1 から始まるインデックスを設定します。
- setUpdatedMin、setUpdatedMax
- エントリの更新日付の範囲を設定します。これらのクエリ パラメータは、
orderby
パラメータがupdated
に設定されていない限り無視されます。
注: 現在、orderby
クエリ パラメータのセッターはありません。ただし、設定する必要がある場合は、Query.addCustomParameter()
メソッドを使用できます。
クエリ パラメータの詳細については、Blogger Data API リファレンスをご覧ください。 ガイドと Google Data API リファレンス ガイドをご覧ください。
投稿の更新
既存のブログ投稿を更新するには、まず更新するエントリを取得し、変更してから、update
メソッドを使用して Blogger に送信します。次のコード スニペットでは、
エントリを取得済みであると仮定します。
あります。
public static Entry updatePostTitle( GoogleService myService, Entry entryToUpdate, String newTitle) throws ServiceException, IOException { entryToUpdate.setTitle(new PlainTextConstruct(newTitle)); URL editUrl = new URL(entryToUpdate.getEditLink().getHref()); return myService.update(editUrl, entryToUpdate); }
上記のコードは、関数全体を含む Entry
を返します。
あります。その他のプロパティを更新するには、
update
を呼び出す前に Entry
オブジェクトを作成します。
注: 投稿に関連付けられた作成者データを変更することは現在サポートされていません。
投稿の削除
投稿を削除するには、投稿の編集 URL を delete
メソッドに渡します。
次のように、GoogleService
オブジェクトに追加します。
public static void deletePost( GoogleService myService, String editLinkHref) throws ServiceException, IOException { URL deleteUrl = new URL(editLinkHref); myService.delete(deleteUrl); }
コメント
Blogger Data API を使用すると、コメントの作成、取得、削除ができます。 コメントの更新はサポートされていません(ウェブでは利用できません) インターフェース)。
コメントの作成
コメントを投稿するには、Entry
オブジェクトを作成し、次のように挿入します。
public static Entry createComment( GoogleService myService, String blogID, String postId, String commentText) throws ServiceException, IOException { // Build the comment feed URI String commentsFeedUri = "http://www.blogger.com/feeds/" + blogID + "/" + postId + "/comments/default"; URL feedUrl = new URL(commentsFeedUri); // Create a new entry for the comment and submit it to the GoogleService Entry myEntry = new Entry(); myEntry.setContent(new PlainTextConstruct(commentText)); return myService.insert(feedUrl, myEntry); }
注: 現在のところ、コメントを投稿できるのは ブロックします。
注: 現在のところ、コメントのカスタム作成者を設定することはできません。新しいコメントはすべて、現在認証されているユーザーによって作成されたものとして表示されます。
コメントの取得
特定の投稿のコメントは、投稿のコメント フィードの URL から取得できます。
public static void printAllComments( GoogleService myService, String blogID, String postId) throws ServiceException, IOException { // Build comment feed URI and request comments on the specified post String commentsFeedUri = "http://www.blogger.com/feeds/" + blogID + "/" + postId + "/comments/default"; URL feedUrl = new URL(commentsFeedUri); Feed resultFeed = myService.getFeed(feedUrl, Feed.class); // Display the results System.out.println(resultFeed.getTitle().getPlainText()); for (int i = 0; i < resultFeed.getEntries().size(); i++) { Entry entry = resultFeed.getEntries().get(i); System.out.println("\t" + ((TextContent) entry.getContent()).getContent().getPlainText()); System.out.println("\t" + entry.getUpdated().toStringRfc822()); } System.out.println(); }
または、ブログのコメント フィードの URL を使用して、すべての投稿からのコメントを取得することもできます。
http://www.blogger.com/feeds/blogID/comments/default
コメントの削除
コメントを削除するには、次のように、コメントの編集 URL を GoogleService
オブジェクトの delete
メソッドに渡します。
public static void deleteComment(GoogleService myService, String editLinkHref) throws ServiceException, IOException { URL deleteUrl = new URL(editLinkHref); myService.delete(deleteUrl); }