ios - 使用适用于 iOS 的 SDK 将视频发布到 Facebook 时出错

标签 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;
    };

完整的错误字符串是:

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 = { 错误 = { 代码 = 352; message = "(#352) 抱歉,您选择的视频文件格式我们不支持。"; 类型 = OAuthException; }; }; 代码 = 400; 标题 = ( { name = "访问控制允许来源"; 值(value)=“*”; }, { name = "缓存控制"; 值(value)=“无​​商店”; }, { 名称=连接; 值(value)=关闭; }, { name = "内容类型"; value = "text/javascript; charset=UTF-8"; }, { 名称=过期; value = "星期六,2000 年 1 月 1 日 00:00:00 GMT"; }, { 名称=编译指示; 值(value)=“无​​缓存”; }, { name = "WWW-Authenticate"; value = "OAuth\"Facebook Platform\"\"invalid_request\"\"(#352) 抱歉,您选择的视频文件格式我们不支持。\""; }, { 名称=“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,权限:( “分享项目”, 电子邮件, “用户照片”, “用户视频”, “发布签到”, “管理页面”, “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 内置功能上传正常。

非常感谢!

最佳答案

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

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

关于ios - 使用适用于 iOS 的 SDK 将视频发布到 Facebook 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19569670/

相关文章:

ios - pushRegistry :didUpdate:pushCredentials not being called

ios - Swift4,选择单元格时的背景颜色

ios - Facebook Live Video API,我可以以编程方式分享 friend 视频流吗?

javascript - 显示多个 Twitter 分享按钮?

android - 如何在 Android 应用程序中使用 Facebook 登录按钮获取 FB 用户 ID

ios - 在 iOS 上可用 OpenCL

ios - 使用 AES 解密 Base64 编码字符串导致错误状态 4301(缓冲区太小)

facebook - 如何离线测试 Messenger Bot?本地网络钩子(Hook)

javascript - 没有访问 token 调用的简单 facebook 注销返回

php - 带有长生命周期 token 的 Facebook PHP/JS SDK "Session has expired at unix time"