Facebook使用oAuth 2.0,它比oAuth 1.0(Twitter使用)更容易實現。
一個例子請求verify_credentials API可能看起來像這樣:
https://api.twitter.com/1/account/verify_credentials.json?oauth_consumer_key=XXX&oauth_nonce=XXX&oauth_signature_method=HMAC-SHA1&oauth_token=XXX&oauth_timestamp=123456789&oauth_version=1.0&oauth_signature=YYY
- oauth_consumer_key是自我解釋
- oauth_nonce可以非常字符的隨機字符串
- oauth_signature_method總是HMAC -SHA1
- oauth_token是您的訪問令牌
- oauth_timestamp是當前UNIX時間戳(以UTC)
- oauth_version始終是1.0
- oauth_signature是您生成的簽名(其Twitter將通過複製驗證)
您通過構建產生oauth_signature參數的值由以下部分組成的簽名基礎字符串。在上殼體
- HTTP方法(在這種情況下
GET
)
- &符號
&
- URL編碼基礎URI(一切從
https
至多幷包括verify_credentials.json)
- &符號
&
- 所有請求參數按字母順序排列,url編碼。 (oauth_signature不應該被包括在這個雖然)
在部分Signing requests in Twitters documentation的僞代碼描述了簽名過程典雅:
httpMethod + "&" +
url_encode( base_uri) + "&" +
sorted_query_params.each { | k, v |
url_encode (k) + "%3D" +
url_encode (v)
}.join("%26")
然後你使用需求暗號產生的基礎字符串,訪問令牌是祕密的。這就是所有這一切:)
但在發出任何請求API之前,您當然需要實際獲得訪問令牌。一旦掌握了oAuth 1.0流程和簽名流程。你會回家。 Twitter的文檔在解釋這個過程方面做得非常出色,但是這是一個相當大的侷限。值得它,但。