通过REST API for Twitter的视频上传在一月中可用,但不支持Fabric框架:
link!
link!
解决方法
根据
documentation需要通过命令进行3个呼叫:INIT,APPEND和FINALIZE.
-(void) shareOnTwitterWithVideo:(NSDictionary*) params{ NSString *text = params[@"text"]; NSData* dataVideo = params[@"video"]; NSString *lengthVideo = [NSString stringWithFormat:@"%d",[params[@"length"] intValue]]; NSString* url = @"https://upload.twitter.com/1.1/media/upload.json"; __block NSString *mediaID; if([[Twitter sharedInstance] session]){ TWTRAPIClient *client = [[Twitter sharedInstance] APIClient]; NSError *error; // First call with command INIT NSDictionary *message = @{ @"status":text,@"command":@"INIT",@"media_type":@"video/mp4",@"total_bytes":lengthVideo}; NSURLRequest *preparedRequest = [client URLRequestWithMethod:@"POST" URL:url parameters:message error:&error]; [client sendTwitterRequest:preparedRequest completion:^(NSURLResponse *urlResponse,NSData *responseData,NSError *error){ if(!error){ NSError *jsonError; NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&jsonError]; mediaID = [json objectForKey:@"media_id_string"]; client = [[Twitter sharedInstance] APIClient]; NSError *error; NSString *videoString = [dataVideo base64EncodedStringWithOptions:0]; // Second call with command APPEND message = @{@"command" : @"APPEND",@"media_id" : mediaID,@"segment_index" : @"0",@"media" : videoString}; NSURLRequest *preparedRequest = [client URLRequestWithMethod:@"POST" URL:url parameters:message error:&error]; [client sendTwitterRequest:preparedRequest completion:^(NSURLResponse *urlResponse,NSError *error){ if(!error){ client = [[Twitter sharedInstance] APIClient]; NSError *error; // Third call with command FINALIZE message = @{@"command" : @"FINALIZE",@"media_id" : mediaID}; NSURLRequest *preparedRequest = [client URLRequestWithMethod:@"POST" URL:url parameters:message error:&error]; [client sendTwitterRequest:preparedRequest completion:^(NSURLResponse *urlResponse,NSError *error){ if(!error){ client = [[Twitter sharedInstance] APIClient]; NSError *error; // publish video with status NSString *url = @"https://api.twitter.com/1.1/statuses/update.json"; NSMutableDictionary *message = [[NSMutableDictionary alloc] initWithObjectsAndKeys:text,@"status",@"true",@"wrap_links",mediaID,@"media_ids",nil]; NSURLRequest *preparedRequest = [client URLRequestWithMethod:@"POST" URL:url parameters:message error:&error]; [client sendTwitterRequest:preparedRequest completion:^(NSURLResponse *urlResponse,NSError *error){ if(!error){ NSError *jsonError; NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&jsonError]; NSLog(@"%@",json); }else{ NSLog(@"Error: %@",error); } }]; }else{ NSLog(@"Error command FINALIZE: %@",error); } }]; }else{ NSLog(@"Error command APPEND: %@",error); } }]; }else{ NSLog(@"Error command INIT: %@",error); } }]; } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。