In the new Facebook SDK 4.0, videos should be streamed as an asset URL. You must copy your local video path to the asset library and use this generated URL to post to Facebook.
Step 1:
NSURL *videoURL=[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"IMG_1007" ofType:@"mp4"]]; [self saveToCameraRoll:videoURL];
Step 2:
- (void)saveToCameraRoll:(NSURL *)srcURL { NSLog(@"srcURL: %@", srcURL); ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; ALAssetsLibraryWriteVideoCompletionBlock videoWriteCompletionBlock = ^(NSURL *newURL, NSError *error) { if (error) { NSLog( @"Error writing image with metadata to Photo Library: %@", error ); } else { NSLog( @"Wrote image with metadata to Photo Library %@", newURL.absoluteString); url_new = newURL; } }; if ([library videoAtPathIsCompatibleWithSavedPhotosAlbum:srcURL]) { [library writeVideoAtPathToSavedPhotosAlbum:srcURL completionBlock:videoWriteCompletionBlock]; } }
Step 3:
FBSDKShareDialog *shareDialog = [[FBSDKShareDialog alloc] init]; NSURL *videoURL = url_new; FBSDKShareVideo *video = [[FBSDKShareVideo alloc] init]; video.videoURL = videoURL; FBSDKShareVideoContent *content = [[FBSDKShareVideoContent alloc] init]; content.video = video; shareDialog.shareContent = content; shareDialog.delegate = self; [shareDialog show];
If you have any other questions, please let me know.
Thanks!
source share