デベロッパー ガイド: JavaScript

Blogger Data API を使用すると、クライアント アプリケーションで Google Data API フィードの形式で Blogger のコンテンツを表示、更新できます。

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

このドキュメントでは、Blogger Data API の機能の概要に加えて、JavaScript クライアント ライブラリを使用した Data API の基本的な操作例も紹介します。ライブラリが使用する基礎となるプロトコルの詳細については、このデベロッパー ガイドのプロトコルのセクションをご覧ください。

目次

対象読者

このドキュメントは、Blogger とやり取りできる JavaScript クライアント アプリケーションを作成するプログラマーを対象としています。JavaScript クライアント ライブラリを使用した基本的な Data API の操作に関する一連の例を提供します。

Blogger Data API のリファレンス情報については、プロトコルのリファレンス ガイドをご覧ください。このドキュメントは、Google Data API プロトコルの背後にある一般的な概念と、JavaScript クライアント ライブラリで使用されるデータモデルと制御フローを理解していることを前提としています。また、JavaScript でのプログラミング方法を理解していることを前提としています。

クライアント ライブラリによって提供されるクラスとメソッドのリファレンス情報については、JavaScript クライアント ライブラリ API リファレンスをご覧ください。

このドキュメントは順番に読むように作られています。各例は前の例に基づいています。

利用規約

JavaScript クライアント ライブラリを使用する際には、Google JavaScript クライアント ライブラリの利用規約を遵守することに同意したものとみなされます。

サポートされている環境について

現時点では、ブラウザのウェブページで実行される JavaScript クライアント アプリケーションのみがサポートされています。現在サポートされているブラウザは、Firefox 1.5 以降と Internet Explorer 6.0 以降です。

JavaScript クライアント ライブラリは、サービスのサーバーとのすべての通信を処理します。経験豊富な JS 開発者は、「同一生成元ポリシーはどうだろう?」と思ってしまうかもしれません。JavaScript クライアント ライブラリを使用すると、クライアントはブラウザのセキュリティ モデルに準拠しながら、任意のドメインから Google Data API リクエストを送信できます。

ご利用にあたって

JavaScript クライアント アプリケーションを作成する前に、ライブラリを取得するためのセットアップを行う必要があります。

Blogger アカウントを作成する

テスト目的で Blogger アカウントに登録することもできます。Blogger では Google アカウントを使用するので、Google アカウントをすでにお持ちであれば問題ありません。

ライブラリの取得

クライアントがクライアント ライブラリを使用する前に、クライアントはサーバーにクライアント ライブラリ コードをリクエストする必要があります。

まず、HTML ドキュメントの <head> セクションで <script> タグを使用して、Google AJAX API ローダーを取得します。

<script type="text/javascript" src="https://www.google.com/jsapi"></script>

ローダーの取得後に Google Data API クライアント ライブラリを取得するには、JavaScript セットアップ コードで次の行を使用します。このコードは、HTML ドキュメントの <head> セクション(または HTML ドキュメントの <head> セクションの <script> タグを使用して組み込まれた JavaScript ファイル)から呼び出す必要があります。

google.load("gdata", "1.x");

google.load() の 2 番目のパラメータは、リクエストされた JavaScript クライアント ライブラリのバージョン番号です。Google のバージョン番号体系は、Google Maps API で使用されている番号体系に基づいています。考えられるバージョン番号とその意味を以下に示します。

"1"
メジャー バージョン 1 の最後から 2 番目のリビジョン。
"1.x"
メジャー バージョン 1 の最新リビジョンです。
"1.s"
メジャー バージョン 1 の最新の安定版。デベロッパーの皆様からのフィードバックに基づいて、特定のバージョンのクライアント ライブラリが「安定版」として宣言されることがあります。ただし、このバージョンには最新の機能が含まれていない場合があります。
"1.0""1.1" など
指定されたメジャー リビジョン番号とマイナー リビジョン番号を持つ、ライブラリの特定のバージョン。

google.load() を呼び出した後、ページの読み込みが完了するまでローダに指示してから、コードを呼び出す必要があります。

google.setOnLoadCallback(getMyBlogFeed);

ここで、getMyBlogFeed() は、このドキュメントの後半のセクションで定義する関数です。onload ハンドラを <body> 要素にアタッチする代わりに、この方法を使用します。

Blogger サービスの認証

Blogger Data API を使用すると、公開フィードと非公開フィードの両方にアクセスできます。 公開フィードは認証を必要としませんが、読み取り専用です。ブログを変更する場合は、非公開フィードをリクエストする前にクライアントが認証を受ける必要があります。

JavaScript クライアント ライブラリでは AuthSub 認証システムが使用されます。Google Data API での認証に関する一般的な情報については、認証のドキュメントをご覧ください。

AuthSub プロキシ認証

AuthSub プロキシ認証は、Google アカウントに対してユーザーを認証する必要があるウェブ アプリケーションで使用されます。ウェブサイト運用者とクライアント コードは、Blogger ユーザーのユーザー名とパスワードにアクセスできません。代わりに、クライアントは、クライアントが特定のユーザーに代わって動作できるようにする特別な AuthSub トークンを取得します。

ウェブベースの JavaScript クライアントの認証プロセスにおける処理の概要は次のとおりです。

  1. クライアント アプリケーションは、クライアント ライブラリから提供される google.accounts.user.login() メソッドを呼び出して、使用する Google サービスを示す「スコープ」値を渡します。Blogger の場合、スコープは "http://www.blogger.com/feeds/" です。
  2. クライアント ライブラリはブラウザを Google の [アクセス リクエスト] ページに送信します。ユーザーはこのページで認証情報を入力してサービスにログインできます。
  3. ユーザーが正常にログインすると、AuthSub システムはブラウザをウェブ クライアントの URL に戻し、認証トークンを渡します。
  4. JavaScript クライアント ライブラリはトークンを Cookie に格納し、クライアント アプリケーションの google.accounts.user.login() を呼び出した関数に制御を返します。
  5. その後、クライアント アプリケーションが Blogger とやり取りするクライアント ライブラリのメソッドを呼び出すと、クライアント ライブラリはすべてのリクエストにトークンを自動的に付加します。

: JavaScript クライアント ライブラリを使用して、認証済みの Blogger リクエストをウェブブラウザで実行するには、そのページと同じドメインでホストされている画像をページに含める必要があります。任意の画像(1 ピクセルの透明画像でも可)を使用できますが、ページ上には画像が必要です。ページに画像が表示されないようにするには、<img> タグの style 属性を使用して、レンダリング領域の外側に画像を配置します。例: style="position:absolute; top: -1000px;"

以下は、ログインを処理するクライアント アプリケーションのコードです。後で他のコードから setupMyService() 関数を呼び出します。

function logMeIn() {
  scope = "http://www.blogger.com/feeds/";
  var token = google.accounts.user.login(scope);
}

function setupMyService() {
  var myService =
    new google.gdata.blogger.BloggerService('exampleCo-exampleApp-1');
  logMeIn();
  return myService;
}

ヒント: ログインボタンなどのユーザー入力メカニズムを使用して、ユーザーに手動でログイン プロセスを開始するよう求めることを強くおすすめします。読み込みの直後に、ユーザーの操作を待たずに google.accounts.user.login() を呼び出すと、ユーザーがページにアクセスしたときに最初に表示されるのは Google のログインページです。ユーザーがログインしないことにした場合、Google はユーザーをページに戻しません。したがって、ユーザーとしては、ユーザーはページにアクセスしようとしたものの、送り返され、戻ってこなかったことになります。このシナリオは、ユーザーを混乱させ、フラストレーションを与える可能性があります。このドキュメントのコード例では、シンプルにするため、読み込み直後に google.accounts.user.login() を呼び出しますが、実際のクライアント アプリケーションにはこの方法はおすすめしません。

token という名前の変数に対して何かを行う必要はありません。クライアント ライブラリがトークンを追跡するため、手動で行う必要はありません。

: 新しい BloggerService オブジェクトを作成すると、クライアント ライブラリは google.gdata.client.init() という名前のメソッドを呼び出します。これにより、クライアントが実行されているブラウザがサポートされているかどうかが確認されます。エラーが発生した場合は、クライアント ライブラリによってユーザーにエラー メッセージが表示されます。この種のエラーを自分で処理する場合は、サービスを作成する前に google.gdata.client.init(handleInitError) を明示的に呼び出します。ここで、handleInitError() は関数です。init エラーが発生すると、関数は標準の Error オブジェクトを受け取ります。そのオブジェクトを使用して、必要な処理を行うことができます。

トークンは、google.accounts.user.logout() を呼び出して取り消すまで有効です。

function logMeOut() {
  google.accounts.user.logout();
}

logout() を呼び出さなかった場合、トークンを格納する Cookie は、ユーザーが削除しない限り 2 年間有効です。この Cookie はブラウザ セッションをまたいで保持されるため、ユーザーはブラウザを閉じてから再び開き、クライアントに戻るとログイン状態を維持できます。

ただし、セッション中にトークンが無効になる特殊な状況があります。Blogger がトークンを拒否した場合、クライアントは logout() を呼び出して現在のトークンを含む Cookie を削除し、再度 login() を呼び出して新しい有効なトークンを取得することで、エラー状態を処理する必要があります。

さまざまなコンテキストで役立つ 2 つの AuthSub メソッドが他にもあります。

  • google.accounts.user.checkLogin(scope) は、指定されたスコープの認証トークンが現在ブラウザにあるかどうかを示します。
  • google.accounts.user.getInfo() は、デバッグで使用するために現在のトークンに関する詳細情報を提供します。

トークンの管理や checkLogin()getInfo() に関する情報など、JavaScript を使用して AuthSub を操作する方法については、JavaScript クライアント ライブラリでの AuthSub 認証の使用のドキュメントをご覧ください。

トップへ戻る