目标c-使用IOS应用程序中的OAuth发布推文



我正在为IPhone构建一个twitter客户端,并使用OAuth验证我对twitter、的请求

现在,我可以获得起始时间线,甚至可以发布推文(不包含任何空格或符号)。当我试图发布包含空格的推文时,问题就开始了,例如它给了我:{"错误":"错误签名","请求":"\/1\/status\/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]];

尝试将编码更改为NSASIIStringEncoding或NSUTF8StringEncoding,看看它是否有效。我不认为你需要百分之十逃避信息设置在身体。只有当您将它作为参数值添加到URL时,才需要它。

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

检查您的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;

最新更新