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}
どうすればこれを修正できますか? よろしくお願いします!
ヘイコ