ブラウザ とモバイルウェブ での Twitterへのログイン 実装は、 OAuthに基づいています。このページではログインフローで使うアクセストークンを取得するために必要なリクエストを例示して説明します。
“Sign in with Twitter” フローを使用するには、あなたの アプリケーション設定へ行き、 “Allow this application to be used to Sign in with Twitter?” オプションが有効になっていることを確認してください。
このページは、あなたがOAuth 1.0aプロトコルを使ってリクエストを署名する方法を知っているものとして記載されています。 リクエストを署名する方法を知りたい場合は、リクエストを承認する のページを読んでください。
このページのリクエスト署名を確認したい場合は、以下のコンシューマ秘密情報を使用してください:
L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg
この値は無効になっており、本物のリクエストとしては動作しません。
ログインフローを開始するには、アプリケーションはPOST oauth / request_tokenに署名されたメッセージを送信してリクエストトークンを取得しなければなりません。
このリクエストでユニークのパラメータは oauth_callbackです。この値には、ユーザーがステップ2を完了した時にリダイレクトするURLをURLエンコードして設定しなければなりません。残りのパラメータはOAuth 署名プロセスで追加されます。

リクエスト例 (Authorization ヘッダは改行しています):
POST /oauth/request_token HTTP/1.1 User-Agent: themattharris' HTTP Client Host: api.twitter.com Accept: */* Authorization: OAuth oauth_callback="http%3A%2F%2Flocalhost%2Fsign-in-with-twitter%2F", oauth_consumer_key="cChZNFj6T5R0TigYB9yd1w", oauth_nonce="ea9ec8429b68d6b77cd5600adbbb0456", oauth_signature="F1Li3tvehgcraF8DMJ7OyxO4w9Y%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1318467427", oauth_version="1.0"
アプリケーションでは、サーバからの応答の HTTP ステータスを調べる必要があります。 200以外の値は失敗したこと示します。
応答のbody部には、oauth_token, oauth_token_secret, oauth_callback_confirmedといったパラメータが含まれています。
アプリケーションではoauth_callback_confirmedがtrueになっているかを確認し、次のステップのために他二つの値を保存する必要があります。
応答例 (応答のbody部は改行しています):
HTTP/1.1 200 OK Date: Thu, 13 Oct 2011 00:57:06 GMT Status: 200 OK Content-Type: text/html; charset=utf-8 Content-Length: 146 Pragma: no-cache Expires: Tue, 31 Mar 1981 05:00:00 GMT Cache-Control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0 Vary: Accept-Encoding Server: tfe oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0& oauth_token_secret=veNRnAWe6inFuo8o2u8SLLZLjolYDmDP7SzL0YfYI& oauth_callback_confirmed=true
次のステップでは、ユーザーをTwitter へ送って、ブラウザでのログインフローで説明したように適切なフローを完了できるようにします。
ユーザーにGET oauth / authenticateを実行させ、ステップ 1で取得したリクエストトークンをoauth_tokenパラメータとして渡します。
これをウェブサイトに実装する最もシームレスな方法は、元の “sign in” リクエストへの応答として HTTP 302リダイレクトを発行することです。 モバイルアプリとデスクトップアプリは、新たしいブラウザウィンドウを開くか、内蔵ウェブビューで直接URLを開く必要があります

リダイレクトする URL 例:
https://api.twitter.com/oauth/authenticate?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0
ログインエンドポイントはユーザーの状態に応じて以下三つのうちいずれかの動作をします。:
ログイン操作でのステータス遷移は、以下のようなフローチャートになります:

認証が成功すると、あなたの callback_url は oauth_tokenパラメータ とoauth_verifierパラメータを含むリクエストを取得します。
あなたのアプリケーションでは、そのトークンがステップ1で取得したリクエストトークンと合致しているか確認する必要があります。
クライアントのリダイレクトからのリクエスト (クエリ文字列パラメータは改行しています):
GET /sign-in-with-twitter/?
oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0&
oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.5 (KHTML, like Gecko) Chrome/16.0.891.1 Safari/535.5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://localhost/sign-in-with-twitter/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
リクエストトークンを使用可能なアクセストークンに変換するために、あなたのアプリケーションではPOST oauth / access_tokenエンドポイントに対して、ステップ 2で取得したoauth_verifierの値を含めてリクエストを発行しなければなりません。
The request token is also passed in the oauth_token portion of the header, but this will have been added by the signing process.

リクエスト例 (Authorization ヘッダは改行しています):
POST /oauth/access_token HTTP/1.1 User-Agent: themattharris' HTTP Client Host: api.twitter.com Accept: */* Authorization: OAuth oauth_consumer_key="cChZNFj6T5R0TigYB9yd1w", oauth_nonce="a9900fe68e2573b27a37f10fbad6a755", oauth_signature="39cipBtIOHEEnybAR4sATQTpl2I%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1318467427", oauth_token="NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0", oauth_version="1.0" Content-Length: 57 Content-Type: application/x-www-form-urlencoded oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY
成功時の応答には oauth_tokenパラメータと oauth_token_secret パラメータが含まれています。
このトークンとトークン秘密情報は、保存して以降のTwitter APIへの認証済みリクエストで使用する必要があります。
ユーザーを識別するには、GET account / verify_credentialsを使用してください。
応答例 (応答の body 部は改行しています):
HTTP/1.1 200 OK Date: Thu, 13 Oct 2011 00:57:08 GMT Status: 200 OK Content-Type: text/html; charset=utf-8 Content-Length: 157 Pragma: no-cache Expires: Tue, 31 Mar 1981 05:00:00 GMT Cache-Control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0 Vary: Accept-Encoding Server: tfe oauth_token=7588892-kagSNqWge8gB1WwE3plnFsJHAZVfxWD7Vb57p0b4& oauth_token_secret=PbKfYqSryyeKDWz4ebtY3o5ogNLG11WJuZBc9fQrQo