2011-05-28 29 views
2

我建立了一個IPhone的Twitter客戶端,我使用OAuth驗證我的要求嘰嘰喳喳發佈使用OAuth從iOS應用

鳴叫,現在我能夠回到家的時間線,甚至當我嘗試發佈包含空格的推文時,問題就開始了,例如它給了我:{「error」:「簽名不正確」,「request」:「\/1 \ /statuses\/update.json「}

例如鳴叫:‘ThisIsATweet’的作品,但推特:‘在這裏,這是推特’不工作 是我的HTTP請求正文代碼:

NSData* body =[NSString stringWithFormat:@"status=%@",[self percentageEncoding:tweet]]; 

[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[request setValue:[NSString stringWithFormat:@"%d",[body length]] forHTTPHeaderField:@"Content-Length"]; 

[request setHTTPBody:[body dataUsingEncoding:NSISOLatin1StringEncoding]]; 
+0

請問您可以寫在Twitter上張貼的網址?你創建請求的那個? – 2011-08-24 09:24:31

回答

0

先用stringByAddingPercentEscapesUsingEncoding:將字符串先逃脫。

+0

對不起使用stringByAddingPercentEscapesUsingEncoding沒有解決問題。 – emmo 2011-05-28 10:10:30

+0

糟糕,我現在在你的代碼中看到你已經逃脫了它:S ..如果你跳過內容長度會發生什麼? – vakio 2011-05-28 10:11:29

+0

跳過內容長度時,沒有任何反應,同樣的問題, – emmo 2011-05-28 10:28:39

0

嘗試將編碼更改爲NSASCIIStringEncoding或NSUTF8StringEncoding並查看它是否有效。我認爲你不需要在體內設置時避開這些信息。只有將它作爲參數值添加到URL時才需要。

[request setHTTPBody:[[NSString stringWithFormat:@"status=%@", tweet] 
    dataUsingEncoding:NSASCIIStringEncoding]]; 
+0

這不起作用,我仍然得到相同的錯誤:錯誤簽名 – emmo 2011-05-28 13:47:08

+0

您是否嘗試使用MGTwitterEngine更新狀態?如果這也給出了同樣的錯誤,我會開始在代碼中查找問題。 – lostInTransit 2011-05-29 08:06:28

0

查看您的request header!我猜你會創建錯誤的簽名值! 請記住,您的header必須是這樣的:

POST http://upload.twitter.com/1/statuses/update_with_media.json 

User-Agent: themattharris' HTTP Client 

Host: upload.twitter.com 

Accept:/

Proxy-Connection: Keep-Alive 

Authorization: OAuth oauth_consumer_key="mbmuCGVFTGHZOo5zr5Sx5A", oauth_nonce="f9685243ba64308204b1c14a05950b09", oauth_signature="LX%2BcnRvzT5Rm%2BYkPzdhX6I%2Bt9oo%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1313443626", oauth_token="119476949-KQjqYB1QCSC9ZtaTI8RRDDRJdSgk8hMcT4BJMEWi", oauth_version="1.0" 

Content-Length: 34411 

Content-Type: multipart/form-data;