我正在尝试使用FBConnect从iPhone应用程序上传视频。实际上我已经尝试了几种方法,但遗憾的是没有任何成功。
首先。使用“ facebook.video.upload ”这里描述的REST方法和技巧iPhone Facebook Video Upload。结果,服务器返回一个空响应,之后发生更多事情。视频不会出现在Facebook上。顺便尝试了不同类型的Facebook应用程序,例如WebApp和Native one。
第二。使用“ me / videos ”GRAPH方法和以下代码启动上传
>
NSMutableDictionary *params = [NSMutableDictionary
dictionaryWithObjectsAndKeys:movieData,
@"source", @"File.mov", @"filename",
nil];
[m_facebook requestWithGraphPath:@"me/videos"
andParams:params andHttpMethod:@“POST” andDelegate:自];
在这种情况下,我遇到了下一个错误:
a)必须使用活动访问令牌来查询有关的信息 当前用户。
b)视频文件格式不是 支撑。
第三。只需发送附有video@facebook.com视频文件的电子邮件。不行。然而,这个解决方案并不像以前那么感兴趣。
我花了两天时间把这些事情搞清楚,这让我发疯了。有人可以分享一个视频上传的工作示例,或者至少指出我的样本中我错了。
谢谢!
答案 0 :(得分:4)
您应该使用Graph方法,因为旧的API已被弃用,并且在不久的将来会在某个时候消失。因此,我将解决这个问题。
第一个问题是,如果不以某种方式登录,您无法将视频上传到Facebook。在上传视频之前,您需要按照这些说明获取访问令牌:http://developers.facebook.com/docs/authentication
您还需要upload_video
权限,由于某种原因未在“权限”页面上列出。
我不确定第二个问题,但Facebook支持a number of video formats。据推测,您的视频采用的是Apple格式之一,可能会受到支持。修复第一个问题,看看是否对第二个问题有任何影响。
答案 1 :(得分:1)
NSURL *urlvideo = [info objectForKey:UIImagePickerControllerMediaURL];
NSString *urlString=[urlvideo path];
NSLog(@"urlString=%@",urlString);
NSString *str = [NSString stringWithFormat:@"you url of server"];
NSURL *url = [NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setFile:urlString forKey:@"key foruploadingFile"];
[request setRequestMethod:@"POST"];
[request setDelegate:self];
[request startSynchronous];
NSLog(@"responseStatusCode %i",[request responseStatusCode]);
NSLog(@"responseStatusCode %@",[request responseString]);
答案 2 :(得分:0)
他们有点老了,但仍然工作正常。 http://developers.facebook.com/attachment/VideoUploadTest.zip 也许这个来源对某人有帮助。 但不要忘记将AppID更改为您的。我已经在3个地方做到了
facebook = [[Facebook alloc] initWithAppId:@“...”]; 和plist文件中的2个属性 - FacebookAppID,URL类型数组 http://i.stack.imgur.com/yZAXQ.png
- (IBAction)buttonClicked:(id)sender {
NSArray* permissions = [[NSArray alloc] initWithObjects:
@"publish_stream", nil];
[facebook authorize:permissions delegate:self];
[permissions release];
}
- (void)fbDidLogin {
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"buf-3" ofType:@"mov"];
NSData *videoData = [NSData dataWithContentsOfFile:filePath];
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
videoData, @"video.mov",
@"video/quicktime", @"contentType",
@"Video Test Title", @"title",
@"Video Test Description", @"description",
nil];
[facebook requestWithGraphPath:@"me/videos"
andParams:params
andHttpMethod:@"POST"
andDelegate:self];
}
祝你好运!
答案 3 :(得分:0)
此代码已在 FaceBook SDK 3.14.1
上成功测试建议: .plist文件中的3个属性
设置FacebookAppID,FacebookDisplayName,
网址类型 - >项目0->网址方案设置为facebookappId前缀fb
See
-(void)shareOnFaceBook
{
//sample_video.mov is the name of file
NSString *filePathOfVideo = [[NSBundle mainBundle] pathForResource:@"sample_video" ofType:@"mov"];
NSLog(@"Path Of Video is %@", filePathOfVideo);
NSData *videoData = [NSData dataWithContentsOfFile:filePathOfVideo];
//you can use dataWithContentsOfURL if you have a Url of video file
//NSData *videoData = [NSData dataWithContentsOfURL:shareURL];
//NSLog(@"data is :%@",videoData);
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
videoData, @"video.mov",
@"video/quicktime", @"contentType",
@"Video name ", @"name",
@"description of Video", @"description",
nil];
if (FBSession.activeSession.isOpen)
{
[FBRequestConnection startWithGraphPath:@"me/videos"
parameters:params
HTTPMethod:@"POST"
completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
if(!error)
{
NSLog(@"RESULT: %@", result);
[self throwAlertWithTitle:@"Success" message:@"Video uploaded"];
}
else
{
NSLog(@"ERROR: %@", error.localizedDescription);
[self throwAlertWithTitle:@"Denied" message:@"Try Again"];
}
}];
}
else
{
NSArray *permissions = [[NSArray alloc] initWithObjects:
@"publish_actions",
nil];
// OPEN Session!
[FBSession openActiveSessionWithPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceEveryone allowLoginUI:YES
completionHandler:^(FBSession *session,
FBSessionState status,
NSError *error) {
if (error)
{
NSLog(@"Login fail :%@",error);
}
else if (FB_ISSESSIONOPENWITHSTATE(status))
{
[FBRequestConnection startWithGraphPath:@"me/videos"
parameters:params
HTTPMethod:@"POST"
completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
if(!error)
{
[self throwAlertWithTitle:@"Success" message:@"Video uploaded"];
NSLog(@"RESULT: %@", result);
}
else
{
[self throwAlertWithTitle:@"Denied" message:@"Try Again"];
NSLog(@"ERROR: %@", error.localizedDescription);
}
}];
}
}];
}
}
当应用程序第一次运行时出现错误:
The operation couldn’t be completed. (com.facebook.sdk error 5.)
当facebook正在进行时就会发生这种情况。下次我打开我的应用程序,它工作正常,它始终是第一次。尝试了应用程序中的所有内容,但似乎是在Facebook SDK端。
看到com.facebook.sdk error 5
的几个原因:
publish_actions
一个旋转。