【发布时间】:2012-08-24 14:01:27
【问题描述】:
我找到了很多使用 facebook SDK 上传视频的解决方案,但它们都不起作用(包括来自 facebook 开发者博客的信息)。这是我用来上传视频的代码。 “out_composed.mov”已成功创建,因为我可以将该视频保存在图库中或通过电子邮件发送。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectoryPath = [paths objectAtIndex:0];
NSString* composedOutputPath = [documentsDirectoryPath stringByAppendingPathComponent:@"out_composed.mov"];
NSData *videoData = [NSData dataWithContentsOfFile:composedOutputPath];
NSMutableDictionary<FBGraphObject>* params = [FBGraphObject graphObject];
[params setDictionary:[NSMutableDictionary dictionaryWithObjectsAndKeys:
videoData, @"video.mov",
@"video/quicktime", @"contentType",
@"My awesome video", @"title", nil]];
if (!appDelegate.session.isOpen)
{
[FBSession openActiveSessionWithPermissions:[NSArray arrayWithObjects:@"offline_access", @"publish_stream",@"user_videos",@"video_upload",nil] allowLoginUI:true completionHandler:^(FBSession *session, FBSessionState status, NSError *error)
{
FBRequest* uploadVideoRequest = [FBRequest requestForPostWithGraphPath:@"/me/videos" graphObject:params];
[uploadVideoRequest startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error)
{
// The server returns "353 missing video file" here.
if(error != nil) NSLog(@"%@",[error description]);
else NSLog(@"Error: %@", error);
}];
}];
appDelegate.session = [FBSession activeSession];
} else
{
FBRequest* uploadVideoRequest = [FBRequest requestForPostWithGraphPath:@"/me/videos" graphObject:params];
[uploadVideoRequest startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error)
{
if(error != nil) NSLog(@"%@",[error description]);
else NSLog(@"Error: %@", error);
}];
}
我得到的错误是:
Error Domain=com.facebook.sdk Code=5 "The operation couldn’t be completed. (com.facebook.sdk error 5.)" UserInfo=0x1fdc94a0 {com.facebook.sdk:ParsedJSONResponseKey={
body = {
error = {
code = 353;
message = "(#353) Missing video file";
type = OAuthException;
};
};
code = 400;
}, com.facebook.sdk:HTTPStatusCode=400}
我该如何解决这个问题?提前非常感谢!
海子
【问题讨论】:
-
在将视频附加到请求之前,您是否尝试过对视频进行 mime 编码? (不过,这只是在黑暗中刺伤)
-
我正在使用 AVAssetExportSession 导出合成电影。我假设编码由 AVAssetExportSession 或 AVAssetWriter 处理。如果我保存或通过电子邮件发送它就可以正常播放。
-
您确定 videoData 包含数据吗? “缺少视频文件”可能是相关的。
-
是的,我的导出器中有一个回调,它会通知它的代理导出完成。当我使用完全相同的文件保存到 iOS 画廊时,它可以工作。使用此文件创建电子邮件有效。只有在尝试构建 Facebook 上传时,才会失败。
-
我读到,上传视频应该使用graph-video.facebook... URL,但没有明显的方法。
标签: ios facebook-graph-api video