使用SDK for iOS将视频发布到Facebook时出错

时间:2013-10-24 15:06:13

标签: ios facebook facebook-graph-api video sdk

我有一个应用程序,使用适用于iOS的Facebook SDK将本机(MOV文件)视频发布到Facebook。几周前,它开始失败并出现以下错误:

    error =         {
        code = 352;
        message = "(#352) Sorry, the video file you selected is in a format that we don't support.";
        type = OAuthException;
    };

完整的错误字符串是:

错误Domain = com.facebook.sdk Code = 5“操作无法完成。(com.facebook.sdk错误5)”UserInfo = 0x1ea42880 {com.facebook.sdk:HTTPStatusCode = 400,com。 facebook.sdk:ParsedJSONResponseKey = {     body = {         error = {             code = 352;             message =“(#352)抱歉,您选择的视频文件采用我们不支持的格式。”;             type = OAuthException;         };     };     代码= 400;     headers =(                 {             name =“Access-Control-Allow-Origin”;             value =“*”;         },                 {             name =“Cache-Control”;             value =“no-store”;         },                 {             name =连接;             value = close;         },                 {             name =“Content-Type”;             value =“text / javascript; charset = UTF-8”;         },                 {             name = Expires;             value =“星期六,2000年1月1日00:00:00 GMT”;         },                 {             name = Pragma;             value =“no-cache”;         },                 {             name =“WWW-Authenticate”;             value =“OAuth \”Facebook平台\“\”invalid_request \“\”(#352)抱歉,您选择的视频文件采用我们不支持的格式。\“”;         },                 {             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,attemptsRefreshDate:2013-10-24 14: 56:54 +0000,权限:(     “share_item”     电子邮件,     “user_photos”     “user_videos”     “publish_checkins”     “manage_pages”     “read_friendlists” )>}

我用来发布的代码与此类似:

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];
            }];
        });
    });

我已更新到最新的SDK版本(3.9),但错误仍然存​​在。任何机构都遇到这个错误?

我正在使用iOS6和iOS7进行测试,因此问题与操作系统版本无关。使用内置iOS-Facebook功能的同一视频上传。

非常感谢!

4 个答案:

答案 0 :(得分:8)

FBRequest之前 添加一行以打开FBRequestConnection为我工作。

[FBRequestConnection startWithGraphPath:@"me/videos" 
    completionHandler:^(FBRequestConnection *connection, 
    id result, NSError *error) 
{
    FBRequest *uploadRequest = 
        [FBRequest requestWithGraphPath:@"me/videos" 
        parameters:params HTTPMethod:@"POST"];
}];

答案 1 :(得分:2)

回答以上工作。但请确保您使用openActiveSessionWithPublishPermissions而不是openActiveSessionWithReadPermissions创建了Facebook会话。

我在这上花了一天时间,因为如果你使用了错误的那个,你会得到(着名的)#34;(#352)抱歉,你选择的视频文件的格式是我们不会这样做的。支持。"

在任何情况下,您真正​​需要的唯一权限是publish_actions

答案 2 :(得分:1)

我没有使用密钥contentType int params。它适用于Facebook SDK 3.10(最新版)

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)
{

}];

答案 3 :(得分:0)

我有相同的错误消息,原因是文件名与编码不匹配。

我正在将gif转换为mp4并上传,但我的文件名仍为*.gif