iOS 5使用Twitter API将照片附加到Twitter

时间:2011-11-14 22:25:09

标签: iphone objective-c twitter ios5

有没有办法使用TWRequest或类似的东西将照片添加到Twitter时间线?在这种情况下,我非常迷失。

我可以使用TWRequest for iOS5和MGTwitterEngine为以前的iOS版本发布状态更新,但我无法将UIImage附加到更新。

提前感谢您提供的任何帮助。

3 个答案:

答案 0 :(得分:15)

我在这个网站上找到并使用了很多很棒的答案,谢谢大家,以为是时候回馈了:)详细说明了诺亚的答案,这是最终的代码,对我来说是一个图像和文字推特使用TWRequest ...

            TWRequest *postRequest = [[TWRequest alloc] initWithURL:[NSURL URLWithString:@"https://upload.twitter.com/1/statuses/update_with_media.json"] parameters:nil requestMethod:TWRequestMethodPOST];

            UIImage * image = [UIImage imageNamed:@"myImage.png"];

            //add text
            [postRequest addMultiPartData:[@"I just found the secret level!" dataUsingEncoding:NSUTF8StringEncoding] withName:@"status" type:@"multipart/form-data"];
            //add image
            [postRequest addMultiPartData:UIImagePNGRepresentation(image) withName:@"media" type:@"multipart/form-data"];

            // Set the account used to post the tweet.
            [postRequest setAccount:twitterAccount];

            // Perform the request created above and create a handler block to handle the response.
            [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
                NSString *output = [NSString stringWithFormat:@"HTTP response status: %i", [urlResponse statusCode]];
                [self performSelectorOnMainThread:@selector(displayText:) withObject:output waitUntilDone:NO];
            }];

我发现使用TWRequest是我的场景的最佳解决方案,因为我不希望用户能够在发布之前编辑帖子(这是使用TWTweetComposeViewController的问题)

答案 1 :(得分:4)

您可以使用Twitter撰写视图控制器TWTweetComposeViewController将照片发布到Twitter,而无需处理Twitter oauth和帐户。有关详细信息,请参阅http://developer.apple.com/library/ios/#documentation/Twitter/Reference/TWTweetSheetViewControllerClassRef/Reference/Reference.html

主要问题是它是iOS 5的新功能,因此未升级的用户将无法使用它。

TWTweetComposeViewController* tweetView = [[TWTweetComposeViewController alloc] init];
[tweetView addImage:yourImage];

TWTweetComposeViewControllerCompletionHandler 
       completionHandler =
    ^(TWTweetComposeViewControllerResult result) {
        switch (result)
        {
            case TWTweetComposeViewControllerResultCancelled:
                NSLog(@"Twitter Result: canceled");
                break;
            case TWTweetComposeViewControllerResultDone:
                NSLog(@"Twitter Result: sent");
                break;
            default:
                NSLog(@"Twitter Result: default");
                break;
        }
        [self dismissModalViewControllerAnimated:YES];
    };
[tweetView setCompletionHandler:completionHandler];

答案 2 :(得分:1)

使用TWRequest,您可以使用-addMultipartData:withName:type:方法,使用来自UIImageJPEGRepresentation()方法的数据,通过Twitter API的statuses/update_with_media方法发布推文。

如果您正在使用TWTweetComposeViewController,它甚至更简单:您可以使用-addImage:方法将一个或多个UIImage图像附加到其中。