サイトのトップへ戻る

Twitter 開発者 ドキュメント日本語訳

xAuth



xAuthについて

xAuthは OAuthでもあります。あなたはTwitterへ署名したリクエストを送信する方法をマスターする必要があります。

xAuth のプロセスでは、読み込み専用もしくか書き込み専用のアクセストークンの生成のみを行います。xAuthではダイレクトメッセージを操作することはできません。 あなたのアプリケーションでユーザーのダイレクトメールへのアクセスが必要な場合、OAuth フローを全て実施する必要があります。

xAuth を使うと、デスクトップアプリやモバイルアプリでユーザー名とパスワードをOAuth アクセストークンと交換することができます。 アクセストークンを取得したら、 xAuthを使用している開発者はユーザーのログインとパスワードを破棄しなければなりません。

xAuth アクセスは許可されたアプリケーションのみに制限されています。あなたのデスクトップ/モバイルアプリケーションがxAuthしか利用できない場合は、 https://support.twitter.com/forms/platformへ詳しい要望を送信してください。あなたのアプリケーション名、コンシューマキー、アプリケーションID(可能であれば)、あなたのアプリケーションではxAuth を使うのが最も適していること説明した概要も記載してください。

xAuth ではPOST HTTPメソッドを使用し、SSL アクセストークンエンドポイントに対してヘッダベースOAuth 認証を使用する必要があります。

xAuth ではまた Twitterの ログイン認証 機能をサポートしています。



xAuthを使用する

xAuthを使用するには、まず このフォームにあなたのアプリケーションについての詳細情報と、xAuth があなたのアプリケーションでのベストチョイスである理由を記載して送信してください。標準のOAuth フローが使用できない場合に限り xAuth の使用が承認されます。

xAuth allows desktop and mobile applications to skip the request_token and authorize steps and jump right to the access_token step. 詳細については POST oauth / access_token を参照してください。

ブラウザ機能のないアプリでアクセストークンをリクエストするには。 Twitter のアクセストークン URL https://api.twitter.com/oauth/access_tokenに対して、アプリケーションのコンシューマキーを付けた HTTPS リクエストを送信します。従来の oauth_* 署名パラメータに加えて、以下のpost パラメータを設定する必要があります:

  • x_auth_usernameクライアントがトークンを取得する際に使用する、ユーザーのログイン情報
  • x_auth_passwordクライアントがトークンを取得する際に使用する、ユーザーのパスワード情報
  • x_auth_modeこの値は “client_auth”にしなければなりません(referring to the process described here)


xAuth アクセストークンのリクエスト例



テスト値

この例で使用されている値は様々な理由により、Twitter APIへ実際に実行するとエラーとなります。: these keys are no longer valid, the password for the user is different, and the timestamp is now stale. However, utilizing these test values in isolation should yield the same signature when building your implementation.

以下のパラメータを使用してxAuth アクセストークンリクエストを実行する場合:

  • oauth_consumer_key - JvyS7DO2qd6NNTsXJ4E7zA
  • oauth_consumer_secret - 9z6157pUbOBqtbm0A0q4r29Y2EYzIHlUwbF4Cl9c
  • oauth_nonce - 6AN2dKRzxyGhmIXUKSmp1JcB4pckM8rD3frKMTmVAo
  • oauth_signature_method - HMAC-SHA1
  • oauth_timestamp - 1284565601
  • oauth_version - 1.0
  • x_auth_mode - client_auth
  • x_auth_password - twitter-xauth
  • x_auth_username - oauth_test_exec

あなたのHTTP POST のbody部分は以下のようになります (POST のbody部はURLエンコードする必要があるので注意してください):

x_auth_username=oauth_test_exec&x_auth_password=twitter-xauth&x_auth_mode=client_auth

様々な要素を適切に URL エンコードすると、 OAuth 署名ベース文字は以下のようになります:

POST&https%3A%2F%2Fapi.twitter.com%2Foauth%2Faccess_token&oauth_consumer_key%3DJvyS7DO2qd6NNTsXJ4E7zA%26oauth_nonce%3D6AN2dKRzxyGhmIXUKSmp1JcB4pckM8rD3frKMTmVAo%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1284565601%26oauth_version%3D1.0%26x_auth_mode%3Dclient_auth%26x_auth_password%3Dtwitter-xauth%26x_auth_username%3Doauth_test_exec

Please note how the already URL-escaped POST body gets encoded again in this process.

このリクエストでは oauth_tokenを使用しないので、署名を作成するための署名秘密情報は以下のようになります:

9z6157pUbOBqtbm0A0q4r29Y2EYzIHlUwbF4Cl9c&

秘密情報を署名した後、 OAuth HTTP 承認ヘッダは以下のようになります:

OAuth oauth_nonce="6AN2dKRzxyGhmIXUKSmp1JcB4pckM8rD3frKMTmVAo", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1284565601", oauth_consumer_key="JvyS7DO2qd6NNTsXJ4E7zA", oauth_signature="1L1oXQmawZAkQ47FHLwcOV%2Bkjwc%3D", oauth_version="1.0"

そして認証に成功すると、以下のような応答が返ってきます:

oauth_token=191074378-1GWuHmFyyKQUKWV6sR6EEzSCdLGnhqyZFBqLagHp&oauth_token_secret=NpCkpRRC5hGEtikMLnQ2eEcEZ0SIVF5Hb2ZgIwmYgdA&user_id=191074378&screen_name=oauth_test_exec&x_auth_expires=0

これ以降は、このアクセストークン(とその秘密情報)を使って認証が必要な全てのリクエストを署名します。 アクセストークン取得以降どうするかについては このページ を参照してください。



ログイン認証

ユーザーが ログイン認証に登録している場合、サーバはカスタムbody部に HTTP 401 エラーの応答を返します。 あなたが send_error_codes パラメータを使用している場合、body部の応答で以下エラーメッセージを取得します。:

User must verify login

Otherwise, the response body will contain a plaintext response:

User must verify login

このエラーが発生した場合、 twitter.com一時パスワードを生成して それを使ってアプリケーションの署名を完了するよう、ユーザーにアドバイスをして下さい。