0

twitteroauth php ライブラリを試して、OAuth をよりよく理解しようとしています。

OAuth を介して認証する方法は、cUrl を使用するときに「Authorize」ヘッダーを使用することであると理解しています。ただし、twitteroauth ライブラリのソースを調べると、ヘッダーが投稿リクエストのように設定されていることがわかります。

 curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:'));

また、「Authorize」ヘッダーに設定する必要があるパラメーターは、実際には次の行ではなく投稿本文に設定されています。

 curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);

このように行われる理由は何ですか?Twitter API ガイドラインでは、ヘッダーの次の実装が指定されている場合:

POST /1/statuses/update.json?include_entities=true HTTP/1.1
Accept: */*
Connection: close
User-Agent: OAuth gem v0.4.4
Content-Type: application/x-www-form-urlencoded
Authorization: 
        OAuth oauth_consumer_key="xvz1evFS4wEEPTGEFPHBog", 
              oauth_nonce="kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg", 
              oauth_signature="tnnArxj06cWHq44gCs1OSKk%2FjLY%3D", 
              oauth_signature_method="HMAC-SHA1", 
              oauth_timestamp="1318622958", 
              oauth_token="370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb", 
              oauth_version="1.0"
Content-Length: 76
Host: api.twitter.com

status=Hello%20Ladies%20%2b%20Gentlemen%2c%20a%20signed%20OAuth%20request%21
4

1 に答える 1

0

クライアントは HTTP Expect ヘッダーを追加して、サーバーに「ねえ、あなたが特定の方法で振る舞うことを期待しています」と伝えることができます。なんらかの理由で、Twitter の実装では何も期待しないでください。私は自分の自家製の実装でこれに遭遇しました。Twitter がこのヘッダーを必要とする理由がわかりません。

クレデンシャルと署名を POST 変数またはヘッダーで提示できます。正しい変数 (oauth_consumer_key、oauth_nonce、oauth_signature、oauth_signature_method、oauth_timestamp、および oauth_token) が設定されている限り、どちらも機能します。

リクエストメソッド(GET、POST、PUTなど)に依存しないため、Authorizationヘッダーをよりクリーンに設定することがわかりました。しかし、Twitter は両方のケースを完全にうまく処理します。それが彼らのライブラリでの実装方法である場合は、そうしてください。

于 2013-04-28T20:51:24.763 に答える