我正在尝试使用带有自定义 UI 的 Twitter 新 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){
}];
但是他们的 URLRequestWithMethod 方法不是可变的。我将如何向其中添加图像。您曾经使用 SLRequest 和
[postRequest addMultipartData:UIImageJPEGRepresentation(image, 0.5) withName:@"media" type:@"image/jpeg" filename:@"image.png"];
最佳答案
我想通了。
首先,您需要将图片发布到 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) {
}];
然后在响应对象中使用 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];
}];
注意第一个请求的响应中的 media_ids 对象
NSMutableDictionary *message = [[NSMutableDictionary alloc] initWithObjectsAndKeys:[params objectForKey:@"description"],@"status",@"true",@"wrap_links",[responseDict objectForKey:@"media_id_string"], @"media_ids", nil];
所以你可以把它放在完成 block 中,它会发布图片和推文。
关于ios - 使用 twitterkit 将图片发布到 Twitter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28673349/