使用twitterkit将图像发布到twitter

Nic*_*ood 6 twitter objective-c ios

我正在尝试使用带有自定义UI的Twitters新TwitterKit发布图像和推文.他们提供的唯一文档是如何使用他们的视图.

所以我可以弄清楚如何在没有图像的情况下做到这一点

NSMutableDictionary *message = [[NSMutableDictionary alloc] initWithObjectsAndKeys:[params objectForKey:@"description"],@"status",@"true",@"wrap_links", nil];

NSURLRequest* request = [twAPIClient URLRequestWithMethod:@"POST" URL:@"https://api.twitter.com/1.1/statuses/update.json" parameters:message error:nil];

[twAPIClient sendTwitterRequest:request completion:^(NSURLResponse* response, NSData* data, NSError* connectionError){



}];
Run Code Online (Sandbox Code Playgroud)

但是他们的URLRequestWithMethod方法并不可变.我将如何添加图像.你以前用SLRequest做的

[postRequest addMultipartData:UIImageJPEGRepresentation(image, 0.5) withName:@"media" type:@"image/jpeg" filename:@"image.png"];
Run Code Online (Sandbox Code Playgroud)

Nic*_*ood 7

我已经弄清楚了.

首先,您需要将图像发布到twitter.

NSString *media = @"https://upload.twitter.com/1.1/media/upload.json";

NSData *imageData = UIImageJPEGRepresentation(image, 0.9);

NSString *imageString = [corgiData base64EncodedStringWithOptions:0];               

NSURLRequest *request = [client URLRequestWithMethod:@"POST" URL:media parameters:@{@"media":imageString} error:&requestError];

[[[Twitter sharedInstance] APIClient] sendTwitterRequest:request completion:^(NSURLResponse *urlResponse, NSData *data, NSError *connectionError) {


}];
Run Code Online (Sandbox Code Playgroud)

然后在响应对象中使用media_id_string并将其添加到我的问题中的代码参数.

所以

NSMutableDictionary *message = [[NSMutableDictionary alloc] initWithObjectsAndKeys:[params objectForKey:@"description"],@"status",@"true",@"wrap_links",mediaIDString, @"media_ids", nil];

NSURLRequest* request = [twAPIClient URLRequestWithMethod:@"POST" URL:@"https://api.twitter.com/1.1/statuses/update.json" parameters:message error:nil];

[twAPIClient sendTwitterRequest:request completion:^(NSURLResponse* response, NSData* data, NSError* connectionError){

 NSDictionary *responseDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&parsingError];

}];
Run Code Online (Sandbox Code Playgroud)

请注意来自第一个请求的响应的media_ids对象

NSMutableDictionary *message = [[NSMutableDictionary alloc] initWithObjectsAndKeys:[params objectForKey:@"description"],@"status",@"true",@"wrap_links",[responseDict objectForKey:@"media_id_string"], @"media_ids", nil];
Run Code Online (Sandbox Code Playgroud)

所以你可以把它放在完成块内,它会发布图像和推文.