デベロッパー ガイド: 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 APIs プロトコルの基本的な考え方と、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 Maps API で使用されているスキームをモデルにしています。考えられるバージョン番号とその意味は次のとおりです。

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

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

google.setOnLoadCallback(getMyBlogFeed);

ここで、getMyBlogFeed() は、このドキュメントの後半で定義する関数です。<body> 要素に onload ハンドラを接続する代わりに、このアプローチを使用します。

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 ピクセルの透明画像でも可)ですが、ページに画像が 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() は関数です。初期化エラーが発生すると、関数は標準の Error オブジェクトを受け取ります。このオブジェクトは任意の方法で使用できます。

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

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

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

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

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

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

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

トップへ戻る