使用来自IOS app的OAuth发布推文

时间:2011-05-28 08:35:50

标签: objective-c ios oauth twitter twitter-oauth

我正在为iPhone构建一个Twitter客户端,我正在使用OAuth来验证我对twitter的请求,

现在我能够获得家庭时间线,甚至发布推文(不包含任何空格或符号)问题在我尝试发布包含空格的推文时开始,例如它给了我:{“error “:”错误的签名“,”请求“:”\ / 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]];

3 个答案:

答案 0 :(得分:0)

首先使用stringByAddingPercentEscapesUsingEncoding:转义字符串。

答案 1 :(得分:0)

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

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

答案 2 :(得分: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;