【问题标题】:Posting a tweet using OAuth from IOS app从 IOS 应用使用 OAuth 发布推文
【发布时间】:2011-09-03 20:54:34
【问题描述】:

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

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

【问题讨论】:

  • 你能写下在推特上发帖的网址吗?您创建请求时使用的那个?

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    尝试将编码更改为 NSASCIIStringEncoding 或 NSUTF8StringEncoding 并查看是否有效。我认为在正文中设置消息时不需要百分比转义消息。仅当您将其作为参数值添加到 URL 时才需要这样做。

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

    【讨论】:

    • 这也不起作用,我仍然收到相同的错误:签名不正确
    • 您是否尝试过使用 MGTwitterEngine 来更新状态?如果这也给出了同样的错误,我会开始在我的代码中查找问题。
    猜你喜欢
    • 2012-05-16
    • 2012-10-27
    • 2012-04-01
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多