无法从iOS应用上传大video到Facebook

我正在尝试上传大文件的video文件到Facebook,但无论采取什么方法,结果都是一样的。 该过程上传5-35mb值的数据,然后超时。 这发生在WiFi上。

我已经尝试过使用Facebook SDK 3.1.1,iOS Social Library(即SLRequest)和AFNetworking。

社交图书馆和networking交友给出了超时的错误,而Facebook SDK只是返回一个代码5,操作无法完成,HTML错误200,但如果我通过工具观看networking活动,它具有相同的签名,兆字节在它停止前上传。

请注意,我可以使用以上三种方法中的任何一种方法上传小video。

有没有人遇到这个问题,并find任何解决scheme或原因呢?

PS我相信它的一个Facebook的错误,我已经logging了一个问题,如果有人想订阅它,以鼓励他们调查( https://developers.facebook.com/bugs/265409976924087 )。

Facebook的SDK代码

NSData *videoData = [NSData dataWithContentsOfFile:videoUrlStr options:NSDataReadingMappedAlways error:&lError]; NSString *description = self.streamToShare.videoDescription; if (description == nil){ description = @""; } NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:videoData, self.streamToShare.publishedStoryFileName, @"video/quicktime", @"contentType", self.streamToShare.name, @"title", description,@"description", nil]; [FBRequestConnection startWithGraphPath:@"me/videos" parameters:params HTTPMethod:@"POST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { if (error) { self.errorMessage = [NSString stringWithFormat:@"error: domain = %@, code = %d, description = %@", error.domain, error.code, error.localizedDescription]; } } 

iOS本地库和AFNetworking代码

 [accountStore requestAccessToAccountsWithType:facebookTypeAccount options:@{ACFacebookAppIdKey: appID,ACFacebookPermissionsKey: @[@"publish_stream"],ACFacebookAudienceKey:ACFacebookAudienceFriends} completion:^(BOOL granted, NSError *error) { if(granted){ NSArray *accounts = [accountStore accountsWithAccountType:facebookTypeAccount]; facebookAccount = [accounts lastObject]; NSLog(@"Facebook Login Success"); NSURL *videourl = [NSURL URLWithString:@"https://graph.facebook.com/me/videos"]; NSURL *pathURL = [[NSURL alloc]initFileURLWithPath:self.streamToShare.publishedStoryURL isDirectory:NO]; NSDictionary *params = @{ @"title": self.streamToShare.name, @"description": description }; SLRequest *uploadRequest = [SLRequest requestForServiceType:SLServiceTypeFacebook requestMethod:SLRequestMethodPOST URL:videourl parameters:params]; [uploadRequest addMultipartData:videoData withName:@"source" type:@"video/quicktime" filename:[pathURL absoluteString]]; uploadRequest.account = facebookAccount; NSURLRequest *urlRequest = [uploadRequest preparedURLRequest]; NSMutableURLRequest *mutableUrlRequest = [urlRequest mutableCopy]; [mutableUrlRequest setCachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData]; [mutableUrlRequest setTimeoutInterval:60]; // adjusting this does not fix the issue // AF Networking Code NSInputStream *stream = [[NSInputStream alloc] initWithData:videoData]; [mutableUrlRequest setHTTPBodyStream:stream]; AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:mutableUrlRequest]; [operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) { NSLog(@"%lld bytes out of %lld sent", totalBytesWritten, totalBytesExpectedToWrite, progress); }]; [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"Facebook upload success"); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Facebook upload error %@",error.localizedDescription); } }]; [operation start]; // iOS Native Library Upload - Commented out so AFNetworking could be tested //NSURLResponse *urlResponse = nil; //NSError *urlRequestError = nil; /*[NSURLConnection sendSynchronousRequest:mutableUrlRequest returningResponse:&urlResponse error:&urlRequestError]; if (urlResponse == nil) { // Check for problems if (urlRequestError != nil) { NSLog(@"Error %@", urlRequestError.localizedDescription); } } else { // Data was received.. continue processing NSLog(@"Worked!"); }*/ }else{ // ouch NSLog(@"Permission not granted. Error: %@", error); } }]; 

graph.facebook.com似乎只接受小video。 尝试张贴到graph-video.facebook.com/me/videos

 NSURL *videourl = [NSURL URLWithString:@"https://graph-video.facebook.com/me/videos"]; 

这已经在最新的SDK中解决了。 现在工作没有问题。