2010-01-02 111 views
20

oauth_token_secret當我從Twitter獲取訪問令牌,我得到類似如下:什麼是Twitter中的OAuth

oauth_token=14410002-F5Bi8hMpQbXamM8MBBw8zw2LYIBL4FEBvxLZfaSwX&oauth_token_secret=K8QNvDcC2f9qtGU8tfa75exwLZ2Sc1jeHrThnk6Co&user_id=14410002&screen_name=blueonion 

什麼oauth_token_secret?這是用來簽署受保護請求的,還是仍然使用的consumer_key。

+9

我發現了規範和盡職盡責地閱讀。我錯過了部分oauth_token_secret,部分原因是該規範將其稱爲「令牌祕密」。你的暗示是,我沒有在提問之前盡力去嘗試是沒有根據的,在這裏也不合適。 – 2010-01-03 15:17:26

回答

15

簡短的答案是:oauth_tokenoauth_token_secret既彌補其用於簽署請求請求令牌。

這裏有一些資源,這可能會幫助:(ESP第6節)

這不是消費者的關鍵。消費者密鑰僅用於識別消費者(=調用Twitter的代碼),而請求令牌綁定給用戶。 Request Token包括一個公共部分和一個祕密部分,它們都用於簽署請求,如第9節中的說明所述。

但是您可能想使用其中一個庫並查看示例。

+0

果然,在9.2節中我正視着我。我一直「看」消費者祕密,並跳過令牌祕密。 OAuth規範是一個非常簡單的閱讀,我仍然設法跳過它。謝謝。 順便說一句,我發現你並不需要的token_secret在Twitter上獲得訪問令牌。可能是一個錯誤,這是我懷疑的原因造成了我的困惑。 – 2010-01-03 15:14:43

9

這其實是一個很好的問題,因爲Twitter的出現已經打破這個要求的OAuth 1.0標準。我偶然發現,如果您從簽名密鑰中省略了oauth_token_secret,即。

$signing_key = encode_rfc3986($consumer_secret).'&'; 
請求訪問令牌時

代替

$signing_key = encode_rfc3986($consumer_secret).'&'.encode_rfc3986($oauth_token_secret); 

,既會工作只是Twitter的一樣。

在我的網站我開發的Twitter的OAuth之前,我開發的任何其他的OAuth 1.0服務提供商的身份驗證和我不能找出原因,甚至需要一個oauth_token_secret。有一次,我嘗試了相同的代碼了對雅虎和LinkedIn我有一個討厭的衝擊,因爲這對於Twitter的工作相同的代碼沒有對其他服務提供商合作(即我使用上空時,我應該使用第二片斷已經在第一個片段)

+0

嘿,測試過。還是這樣! ;)你有沒有在twitter上報告過它? – sebilasse 2016-12-26 17:08:28