2011-05-28 59 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;