Reputation: 1186
I have an app that posts native (MOV files) video to Facebook using the Facebook SDK for iOS. It worked without problems till a few weeks ago where it started failing with the following error:
error = {
code = 352;
message = "(#352) Sorry, the video file you selected is in a format that we don't support.";
type = OAuthException;
};
The full error string is:
Error Domain=com.facebook.sdk Code=5 "The operation couldn’t be completed. (com.facebook.sdk error 5.)" UserInfo=0x1ea42880 {com.facebook.sdk:HTTPStatusCode=400, com.facebook.sdk:ParsedJSONResponseKey={ body = { error = { code = 352; message = "(#352) Sorry, the video file you selected is in a format that we don't support."; type = OAuthException; }; }; code = 400; headers = ( { name = "Access-Control-Allow-Origin"; value = "*"; }, { name = "Cache-Control"; value = "no-store"; }, { name = Connection; value = close; }, { name = "Content-Type"; value = "text/javascript; charset=UTF-8"; }, { name = Expires; value = "Sat, 01 Jan 2000 00:00:00 GMT"; }, { name = Pragma; value = "no-cache"; }, { name = "WWW-Authenticate"; value = "OAuth \"Facebook Platform\" \"invalid_request\" \"(#352) Sorry, the video file you selected is in a format that we don't support.\""; }, { name = "x-fb-loadmon"; value = "0,30,70"; } ); }, com.facebook.sdk:ErrorSessionKey=, expirationDate: 4001-01-01 00:00:00 +0000, refreshDate: 2013-10-15 17:19:33 +0000, attemptedRefreshDate: 2013-10-24 14:56:54 +0000, permissions:( "share_item", email, "user_photos", "user_videos", "publish_checkins", "manage_pages", "read_friendlists" )>}
The code I use to post is similar to this:
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
videoData,@"video.mov",
@"video/quicktime", @"contentType",
title, @"title",
status, @"description",
nil];
FBRequest* request = [FBRequest requestWithGraphPath:[NSString stringWithFormat:@"%@/videos",@"me"]
parameters:params
HTTPMethod:@"POST"];
[request setSession:session];
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0ul);
dispatch_async(queue, ^{
dispatch_async(dispatch_get_main_queue(), ^(void) {
[request startWithCompletionHandler:^(FBRequestConnection* conn, id data, NSError* error){
SSLog(@"DONE!");
[self processResponseWithData:data requestIdentifier:requestIdentifier andError:error];
}];
});
});
I have updated to the latest SDK version (3.9) but the error is still there. Any body is experiencing this error?
I'm testing with iOS6 and iOS7, so the problem is not related with the OS version. The same video uploads okey using the iOS-Facebook built in function.
Thanks very much!
Upvotes: 8
Views: 2439
Reputation: 490
I don't use key contentType
int params. It works well with Facebook SDK 3.10 (latest)
NSData *videoData = [NSData dataWithContentsOfFile:filePath];
NSString* videoName = [filePath lastPathComponent];
NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
[params setObject:caption forKey:@"description"];
[params setObject:videoData forKey:videoName];
FBRequestConnection *requestConnection = [FBRequestConnection startWithGraphPath:@"me/videos"
parameters:params
HTTPMethod:@"POST"
completionHandler:^(FBRequestConnection *connection, id result, NSError *error)
{
}];
Upvotes: 1
Reputation: 10781
I had the same error message and the cause was the filename didn't match the encoding.
I was converting gif
to mp4
and uploading, but my filename was still *.gif
Upvotes: 0
Reputation: 2403
Just before FBRequest
Add a line to open FBRequestConnection
Worked for me.
[FBRequestConnection startWithGraphPath:@"me/videos"
completionHandler:^(FBRequestConnection *connection,
id result, NSError *error)
{
FBRequest *uploadRequest =
[FBRequest requestWithGraphPath:@"me/videos"
parameters:params HTTPMethod:@"POST"];
}];
Upvotes: 8
Reputation: 470
Answers above work. But make sure you created the Facebook session, with openActiveSessionWithPublishPermissions not openActiveSessionWithReadPermissions.
I spent a day on this, because if you use the wrong one, you get the (in)famous "(#352) Sorry, the video file you selected is in a format that we don't support."
In any case the only permission you really need is publish_actions
Upvotes: 2