サイトのトップへ戻る

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

OAuth エコーを使用する

この機能は SDK v1.1.1から使用可能です。

OAuthエコーでは、APIとやり取りしている間のOAuth 認証をサードパーティへしっかりと任せます。

例えば、ユーザーの資格情報の検証をあなたのアプリからではなくあなたのサーバ(サードパーティ)から行いたいような場合です。

OAuth エコーについての詳細な技術情報は ここで参照できます。



TWTROAuthSigningのインスタンスを作成する

TWTROAuthSigningのインスタンスを作成するには、Digits機能とTwitterいずれかからのユーザーセッションと、アプリケーション認証の設定が必要です。

The TWTRAuthConfigオブジェクトはあなたのTwitter アプリやDigits アプリを識別するための資格情報を内包します。 このオブジェクトはTwitter クラスから取得できます (後述のサンプルコードを参照してください)。

An TWTRAuthConfig object represents the user credentials of a Twitter of Digits user session. TWTRSessionクラスとDGTSessionクラスは両方ともこのプロトコルに準拠しています。

// Objective-C
// Instantiates TWTROAuthSigning
TWTROAuthSigning *oauthSigning = 
            [[TWTROAuthSigning alloc] 
            initWithAuthConfig:
                [Twitter sharedInstance].authConfig 
                authSession:[Twitter sharedInstance].session];
// Swift
// Instantiates TWTROAuthSigning
let oauthSigning = TWTROAuthSigning(
          authConfig: Twitter.sharedInstance().authConfig, 
          authSession: Twitter.sharedInstance().session())


OAuth エコーの署名ヘッダを作成する

OAuth エコーを使用する最も簡単場方法は、認証ヘッダをリクエストして、アプリ外からverify_credentialsへのリクエストを作成することです。

// Objective-C
NSDictionary *authHeaders = 
        [oauthSigning OAuthEchoHeadersToVerifyCredentials];
// Swift
let authHeaders = oauthSigning
        .OAuthEchoHeadersToVerifyCredentials()

authHeadersのディクショナリはX-Auth-Service-Provider (TWTROAuthEchoRequestURLStringKey でconstant定義されている)キー とX-Verify-Credentials-Authorization(TWTROAuthEchoAuthorizationHeaderKey でconstant定義されている)キーを保持しています。 Your backend should take the OAuth signature in X-Verify-Credentials-Authorization, and use it to set the Authorization header for a request to the URL in X-Auth-Service-Provider.

// Objective-C
NSMutableURLRequest *request = 
  [NSMutableURLRequest requestWithURL:
    [NSURL URLWithString:
      @"http://api.yourbackend.com/check_credentials"]];
request.allHTTPHeaderFields = authHeaders;
// Swift
let request = NSMutableURLRequest(
  URL: NSURL(string: 
    "http://api.yourbackend.com/check_credentials"))
request.allHTTPHeaderFields = authHeaders