2011-01-31 36 views
3

我有一個iOS應用那帖子圖片給幾個服務,其中包括Twitter和我試圖擴展到tumblr的支持401 /「無效的OAuth認證」。我已經修改了OAuth 1.0a標題邏輯的一些開源代碼,並且它的工作足以讓twitter + twitpic和tumblr的認證成功。但是圖像職位,以tumblr與狀態401和字符串響應「無效的OAuth認證,」的tumblr的OAuth圖像後給我

未能簡化,我唯一的多部分是崗位類型和圖像數據。

所以我簡單的POST是http://www.tumblr.com/api/write,簽名基本字符串(大概,因爲我節錄我的消費密鑰和標記,並換行增加了可讀性):

POST&http%3A%2F%2Fwww.tumblr.com%2Fapi%2Fwrite& 
oauth_consumer_key%3Dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx%26 
oauth_nonce%3D71edd7a1224463a7e1723bb7b568060b4d69deb6%26 
oauth_signature_method%3DHMAC-SHA1%26 
oauth_timestamp%3D1297678418%26 
oauth_token%3Dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx%26 
oauth_version%3D1.0%26 
type%3Dphoto 

我的OAuth標題是(再次,換行符添加這裏閱讀):

Authorization: OAuth realm="http://www.tumblr.com/", 
oauth_consumer_key="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 
oauth_signature_method="HMAC-SHA1", 
oauth_timestamp="1296445530", 
oauth_nonce="71edd7a1224463a7e1723bb7b568060b4d69deb6", 
oauth_version="1.0", 
oauth_token="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 
oauth_signature="fWuli4eO3qVehfdeFzZN%2FDNYpFk%3D" 

唯一的其他頭我添加的內容類型(多/表單數據)&內容長度和消息體就是:

--my_sorta_unique_boundary_string 
Content-Disposition: form-data; name="type" 

photo 
--my_sorta_unique_boundary_string 
Content-Disposition: form-data; name="data" 
Content-Type: image/jpg 
Content-Transfer-Encoding: binary 

... (image data) ... 
--my_sorta_unique_boundary_string-- 

誰能告訴我,如果我做錯了什麼與我的簽名基本字符串或身份驗證頭,或者如果有一些伎倆越來越tumblr的OAuth崗位工作?

回答

1

我只是做了我的應用程序發佈照片條目Tumblr時生成的基本字符串轉儲。添加了斷線以減少模糊。希望能幫助到你。

POST&http%3A%2F%2Fwww.tumblr.com%2Fapi%2Fwrite& 
caption%3D%253Cp%253Etesting%253C%252Fp%253E%26 
click-through-url%3D%26 
format%3Dhtml%26 
generator%3D%253C%2520href%253D%2522http%253A%252F%252Fsudocode.net%252Fprojects%252Fpicasa-2-tumblr%2522%253EPicasa2Tumblr%253C%252Fa%253E%26 
group%3Darvn.tumblr.com%26 
oauth_consumer_key%3Dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx%26 
oauth_nonce%3Db0f187f5d0781b3d6aea0f192e116524%26 
oauth_signature_method%3DHMAC-SHA1%26 
oauth_timestamp%3D1296560370%26 
oauth_token%3DwkR9Jjtnp0tMPHp3aqcxvRd401cUeVX7PzxUrc0Y8SZZRoLHgs%26 
oauth_version%3D1.0%26 
private%3D0%26 
slug%3D%26 
state%3Ddraft%26 
tags%3D%26 
type%3Dphoto 

一件事,你沒有通知你要發佈使用參數照片的tumblr。

+0

謝謝,我添加了類型參數,但仍然失敗(編輯我的問題說出來)。我想知道我錯過的一些參數實際上是否是必需的,並且以某種方式報告爲oauth失敗。問題是:您的授權標頭是否只包含oauth參數(其他參數以表格數據部分的形式提供)與我的一樣? – 2011-02-14 10:29:37

2

具有正好與我在Silverlight的OAuth實現了同樣的問題 - 我已經實現了API的其餘部分沒有問題,如果你不使用OAuth,只是發送電子郵件/密碼頭以及這種方法可行。

阿爾文的職位只是表明我雖然這個問題,他包括他的OAuth其他非文件字段。我只是對我的帖子做了同樣的事情,所以他們在多部分形式的身體,但也被添加到OAuth信號 - 現在我上傳照片帖子沒有問題!

0

有同樣的問題:它看起來像我以前(GTM的OAuth)不使用簽名的POST數據字段的OAuth庫。之後,我已經添加了場標題另外作爲查詢字符串,在OAuth的庫使用它們,我能夠上傳照片/後/不管。

似乎每個帖子正文字段(二進制數據除外)都需要成爲OAuth簽名的一部分。