加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

iPhone Facebook视频上传

发布时间:2020-12-14 19:47:01 所属栏目:百科 来源:网络整理
导读:我一直在为此工作几天,似乎无法在任何地方找到一个直接的答案或例子.我正在尝试从我的iPhone应用程序中将视频上传到Facebook.我可以连接到Facebook(并已上传图片)没有问题使用: _facebook = [[Facebook alloc] initWithAppId:kAppID];_permissions = [[NSAr
我一直在为此工作几天,似乎无法在任何地方找到一个直接的答案或例子.我正在尝试从我的iPhone应用程序中将视频上传到Facebook.我可以连接到Facebook(并已上传图片)没有问题使用:

_facebook = [[Facebook alloc] initWithAppId:kAppID];
_permissions =  [[NSArray arrayWithObjects:@"publish_stream",@"offline_access",nil] retain];
[_facebook authorize:_permissions delegate:self];

不过我似乎无法让我的视频上传工作.我当前的代码是:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"TestMovie" ofType:@"mp4"];
NSData *data = [NSData dataWithContentsOfFile:filePath];

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                               data,@"video",nil,@"callback",@"test",@"title",@"upload testing",@"description",@"EVERYONE",@"privacy",nil];

[_facebook requestWithMethodName:@"video.upload"
                       andParams:params
                   andHttpMethod:@"POST"
                     andDelegate:self];

由于视频上传电话必须发送到不同的服务器,所以我更改了facebook.m文件中的restserver url:

static NSString* kRestserverBaseURL = @"https://api-video.facebook.com/method/";

当我运行这个上传崩溃与错误:

facebookErrDomain err 353.

任何帮助将不胜感激.

编辑:

随着Zoul的帮助,我现在已经实现了以下代码(我没有改变他的上传类和SDK的版本).该请求不再收到错误,但没有上传任何内容.

我初始化了Facebook对象和上传对象:

_facebook = [[Facebook alloc] initWithAppId:kAppID];
_permissions =  [NSArray arrayWithObjects:@"publish_stream",nil];
[_facebook authorize:_permissions delegate:self];
_upload = [[FBVideoUpload alloc] init];

一旦Facebook登录,我会使用它:

- (void)fbDidLogin{
    _upload.accessToken = _facebook.accessToken;
    _upload.apiKey = kApiKey;
    _upload.appSecret = kApiSecret;

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Test" ofType:@"mp4"];
    NSURL *fileURL = [NSURL fileURLWithPath:filePath];
    NSData *data = [NSData dataWithContentsOfFile:filePath];

    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                               data,@"",nil];

    [_upload startUploadWithURL:fileURL params:params delegate:self];
}

解决方法

我在GitHub的Facebook SDK的叉上有一个 video upload branch.我没有触摸它几个星期,但它曾经工作正常(只需要旧式认证,见 this branch). FBVideoUpload class header中有一些意见,但界面几乎不言自明.还有一些有用的讨论在我的 pull request – 特别是关于api视频集群的SSL证书,可以使整个问题更容易,但我还没有审查的代码.

[Rant:可惜的是,iOS SDK的Facebook SDK在GitHub上并不完美.有很多拉请求,但官方开发人员似乎没有合并任何东西,甚至不是文件中的简单的错字修复.大多数时候拉拉请求只是坐在那里直到被拒绝.

是的,我是否提到视频上传代码是一个凌乱的黑客?视频上传代码是一个凌乱的黑客.它解析了一些认证令牌,并且可能会很快破产,但这是我可以使之恢复正常工作的唯一方法.

更新:视频上传分支不再是现在,您现在可以使用官方SDK轻松上传视频:

NSData *videoData = [NSData dataWithContentsOfURL:movieURL];
NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
    …,…,@"file",videoData,@"clip.mov",nil];
[facebook requestWithGraphPath:@"me/videos" andParams:params andHttpMethod:@"POST" andDelegate:self];

这是“正确的方法”?,以前的解决方案只是一个暂时的黑客.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读