デベロッパー ガイド: 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 リクエストを実行するには、ページと同じドメインでホストされている画像をページに含める必要があります。任意の画像を指定できます(単一ピクセルの透明な画像でも可)。ただし、ページに画像を配置する必要があります。画像をページに表示したくない場合は、<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() を再度呼び出して新しい有効なトークンを取得することで、エラー状態を処理する必要があります。

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

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

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

トップへ戻る