gpt4 book ai didi

ios - 在没有 iOS Composer 的情况下使用 Fabric API 在 Twitter 上分享视频

转载 作者:技术小花猫 更新时间:2023-10-29 10:20:07 25 4
gpt4 key购买 nike

1 月份可以通过 REST API 为 Twitter 上传视频,但不能使用 Fabric 框架: 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, NSData *responseData, 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, NSData *responseData, 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, NSData *responseData, 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);
}

}];
}
}

关于ios - 在没有 iOS Composer 的情况下使用 Fabric API 在 Twitter 上分享视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31259869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com