2010年10月17日日曜日

Google Books Search API : Data API - Authenticating to the Book Search service -

■ Getting started

 ● Creating a Book Search account

  Book Search は Google Account を使っているので、
  Google Account を既に持って入れば、そのアカウントで
  My Library の機能をテストできる。



■ Authenticating to the Book Search service

 Public feed には、authentication は必要ないが、read-only

 user libraries を編集したり、レビューや評価を投票したり、
 ラベルを追加したりする場合は、private feeds にリクエスト
 を投げる前に authentication が必要

 authentication には2つの方法がある
 AuthSub proxy authentication
 ClientLogin username/password authentication

 authentication documentation

 ● AuthSub proxy authentication

  AuthSub proxy authentication はユーザーの Google Accounts で
  認証する必要がある web アプリで使う
  web site operator や client code は Book Search ユーザーの
  username と password にアクセスする必要がない代わりに、
  client は特別な AuthSub token を取得する
  詳しくは AuthSub documentation を参照

  ユーザーが最初に自分のアプリケーションに来たときにはまだ
  認証がされていない。この場合、情報を表示して、ユーザーの
  アカウントにアクセスするリクエストを認証するための Google page に
  リダイレクトする必要がある。

  AuthSubRequest URL は以下のクエリパラメータを含む

  next
    認証後に Google がリダイレクトするページのURL
  scope
    アプリケーションが Book Search feeds のトークンを
    リクエストしていることを表す。この scope の文字列には、
    http://www.google.com/books/feeds/
    (もちろん URL-encoded する) を使う
  secure
    client が secure token をリクエストしているかどうかを表す
  session
    multi-use (settion) token に持ち替えられるかどうかを表す

  AuthSubRequest URL はこんな感じになる。

https://www.google.com/accounts/AuthSubRequest?scope=http%3A%2F%2Fwww.google.com%2Fbooks%2Ffeeds%2F&session=1&secure=0&next=http%3A%2F%2Fwww.example.com%2Fwelcome.html

  許可すると、next パラメータで指定したらURLにリダイレクトされ、
  AuthSub System が最後に token パラメータを追加する

  リダイレクト先の URL はこんな感じになる。

http://www.example.com/welcome.html?token=yourAuthToken
  

  例えば、

https://www.google.com/accounts/AuthSubRequest?scope=http%3A%2F%2Fwww.google.com%2Fbooks%2Ffeeds%2F&session=1&secure=0&next=http%3A%2F%2Fy-anz-m.blogspot.com

  にアクセスすると、次のようなページが表示される

  許可すると、http://y-anz-m.blogspot.com/ にリダイレクトされる


  このトークン値は single-use AuthSub token を提供する。
  この例では、session=1 を指定しているので、Authorization header に
  single-use token を付加して AuthSubSessionToken サービス
  を呼び出すことで、AuthSub session token を
  取り替えられる

  header はこんなかんじ

GET /accounts/AuthSubSessionToken HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: AuthSub token="yourAuthToken"
User-Agent: Java/1.5.0_06
Host: www.google.com
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive


  AuthSubSessionToken サービスのレスポンスには、 Token header に
  session token が含まれ、Expiration header にどのくらいの期間
  このトークンが有効かが含まれる
  
  アプリケーションでは、続く Book Search とのやりとりの
  Authorization header に、この session token をつかうことができる

  non-secure token を含む HTTP リクエストの例

GET http://www.google.com/books/feeds/users/me/volumes HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: AuthSub token="yourSessionToken"
User-Agent: Java/1.5.0_06
Host: www.google.com
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive


 ● ClientLogin username/password authentication

  client が standalone (single-user が "installed" した
  クライアント、デスクトップアプリケーションとか)の場合、
  ClientLogin authentication を使う。ClientLogin を使って
  authentication token をリクエストするには、次の URL に
  POST リクエストを送る
  

https://www.google.com/accounts/ClientLogin


  POST body には、クエリパラメータのセットを含み、content type
  には、application/x-www-form-urlencoded を使う

  パラメータ

  accountType
    認証されるアカウントのタイプ
    デフォルトは GOOGLE
    もし、Google Apps ユーザーをサポートしたいなら
    HOSTED_OR_GOOGLE
  Email
    ユーザーの email アドレス
  Passwd
    ユーザーの パスワード
  service
    Book Search サービス名 "print"
    (他のサービス名は service name list 参照)
  source
    client アプリケーションの識別値
    companyName-applicationName-versionID から取得する


  パラメータの詳細は Authentication for Installed Applications 参照

  認証リクエストに失敗場合、サーバーは HTTP 403 Forbidden
  status code を返す

  成功した場合、サーバーは HTTP 200 OK status code を返す
  さらに 3つの long alphanumeric codes SID, LSID, Auth を
  レスポンスの bodyに含む
  Auth 値が authorization token であり、volumes-feed リクエスト
  と一緒に Book Search に送る。SID と LSID は無視していい。

  private feeds への全てのリクエストは認証が必要なので、Book Search
  との全てのやりとりには、次のフォーマットを使って Authorization
  header をセットしなければならない


Authorization: GoogleLogin auth=yourAuthToken


  yourAuthToken は ClientLogin リクエストで返された Auth 文字列

  リクエストとレンスポンスを含む ClientLogin authentication の詳細は、
  Authentication for Installed Applications を参照

  注: 与えられたセッションでの全てのリクエストに同じトークンを使うこと
    Book Search リクエストごとに新しい token を取得しないこと


 

0 件のコメント:

コメントを投稿