Skip to content
mala edited this page Mar 26, 2013 · 2 revisions

JavaScript SDK

目的

  • パスワードを入れずにAPIを使えるようにする
  • APIエンドポイントの差し替えがやりやすいようにする
  • 自分専用クライアント作りやすいようにする

仕様

  • OAuth2.0の仕様、語彙をベースに簡略化をはかったもの

  • XMLHttpRequest level2必須、JSONPは無し、APIサーバーとは直接やり取りする、postMessageも必須

  • client_idの事前登録: 無し、様子見 / client_secret: 現状無し

  • アプリ向け : TODO: 手動でトークン発行してコピペする機能作る

  • ブラウザ拡張機能等からは好き放題tokenが取れてしまう → 現状防ぎ用無し

  • JavaScript or ローカルアプリから叩く前提、トークン手動でコピペして自分の信用するサーバーから使うのはあり

  • なぜclient_idを事前登録しないか → どうせ偽装できる、Webサイトにおいてはoriginを担保にする、UserAgentと同じ扱い

  • 初回の認可時には計算問題が出る。同一クライアントが有効期限内であれば単なる確認画面が出る。

サーバー側のフロー

  • クライアントがauthorize用URLを開く → postMessageでリクエストを受け取る → ユーザーに確認する → OKだったらpostMessageで返事する
  • 既存のaccess tokenがあれば、それを返します。無ければ新規に作ります。
  • ユーザーが気軽にクリックしないように新規の場合は計算問題やcaptchaによる負荷を与えます

クライアント側のフロー

  • トークンの取得: 人間が読めるアプリ名、client_id(URLもしくはorigin)、有効期限(秒数)を指定してサーバーにリクエストします。
  • client_id は同じアプリケーションだと名乗るためのもので、Webベースの場合は単にURLで良いです。
  • scopeの概念は将来的に作ります、今のところ全てのAPIにアクセスできます
  • APIへのアクセス: リクエストヘッダに Authorization: Bearer [発行されたaccess_token] を付けて各APIのURLにアクセスします

参考にしたもの

  • Facebook Connect
  • Google+ Sign-In