【问题标题】:Error posting video to Facebook using SDK for iOS使用 SDK for iOS 将视频发布到 Facebook 时出错
【发布时间】:2013-11-03 09:08:45
【问题描述】:

我有一个使用 Facebook SDK for iOS 将原生(MOV 文件)视频发布到 Facebook 的应用。直到几周前它开始没有问题,它开始失败并出现以下错误:

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

完整的错误字符串是:

Error Domain=com.facebook.sdk Code=5 “操作无法完成。(com.facebook.sdk 错误 5。)” UserInfo=0x1ea42880 {com.facebook.sdk:HTTPStatusCode=400, com. facebook.sdk:ParsedJSONResponseKey={ 身体 = { 错误 = { 代码 = 352; message = "(#352) 抱歉,您选择的视频文件格式我们不支持。"; 类型 = OAuthException; }; }; 代码 = 400; 标题 = ( { name = "访问控制允许来源"; 值 = "*"; }, { name = "缓存控制"; 价值=“无​​商店”; }, { 名称=连接; 价值=关闭; }, { name = "内容类型"; 值=“文本/javascript;字符集=UTF-8”; }, { 名称=过期; value = "星期六,2000 年 1 月 1 日 00:00:00 GMT"; }, { 名称 = 编译指示; value = "无缓存"; }, { name = "WWW-认证"; value = "OAuth \"Facebook Platform\" \"invalid_request\" \"(#352) 抱歉,您选择的视频文件格式我们不支持。\""; }, { 名称=“x-fb-loadmon”; 值 = "0,30,70"; } ); },com.facebook.sdk:ErrorSessionKey=,过期日期:4001-01-01 00:00:00 +0000,刷新日期:2013-10-15 17:19:33 +0000,尝试刷新日期:2013-10-24 14: 56:54 +0000,权限:( "share_item", 电子邮件, “用户照片”, “用户视频”, "publish_checkins", “管理页面”, “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内置功能,同样的视频上传成功。

非常感谢!

【问题讨论】:

  • 我收到了同样的错误。我试图上传 MP4 视频,而不是 MOV。解决方法是将videoData参数名称改为@"video.mp4",并将contentType值改为@"video/mp4"。
  • .mov 文件也有同样的问题。一切似乎都符合 fb 文档。
  • 一周后我也遇到了这个问题。相同的代码正在运行。

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


【解决方案1】:

我不使用密钥 contentType int 参数。它适用于 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)
{

}];

【讨论】:

    【解决方案2】:

    我收到了同样的错误信息,原因是文件名与编码不匹配。

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        以上答案。但请确保您创建了 Facebook 会话,其中 openActiveSessionWithPublishPermissions 不是 openActiveSessionWithReadPermissions。

        我花了一天时间,因为如果你用错了,你会得到(臭名昭著的)“(#352)对不起,你选择的视频文件是我们不支持的格式。”

        无论如何,您真正需要的唯一权限是 publish_actions

        【讨论】:

          猜你喜欢
          • 2012-08-24
          • 1970-01-01
          • 1970-01-01
          • 2015-02-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多