2011-06-16 136 views
17

所以,我只需要檢索用戶的基本信息(/ verify_credentials特(Twitter),/我(臉譜),所以我試着推出自己的代碼,現在twitter/verify_credentials的外觀如何?

了它在第二次嘗試Facebook的,因爲我需要的是向graph.facebook.com/me + access_token發送請求

但是現在試圖用twitter做到這一點非常痛苦,我只是無法弄清楚文檔,所以,請問,請求是什麼Twitter的API/verify_credentials樣子?

哪些PARAMS? Twitter的API,宇吸?

回答

26

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的文檔在解釋這個過程方面做得非常出色,但是這是一個相當大的侷限。值得它,但。