我有一个 facebook 页面,我正在尝试上传一个已经托管在我的服务器上的视频。我需要通过 javascript 执行此操作,而我所拥有的只是视频的 src 链接(类似于https://cdn.whodaman.net/Q45rt7y.mp4
)。作为管理员,我拥有所有必需的权限 ( publish_stream, manage_pages
)。
facebook api说我必须发送数据,这multipart/form-data
意味着视频内容。所以要通过 ajax 做到这一点,我在 stackoverflow 上关注了这个问题,并关注了 How to send FormData objects with Ajax-requests in jQuery。
这是我的javascript 代码:
var fd = new FormData(); fd.append('来源', 'https://cdn.whodaman.net/Q45rt7y.mp4' ); fd.append('access_token', testaccessToken); fd.append('title', "测试视频"); $.ajax({ url: "https://graph-video.facebook.com/"+testPageId+"/videos", 数据:fd, 处理数据:假, 内容类型:假, 类型:'POST', 发送前:函数(xhr){ xhr.setRequestHeader('Content-Type', 'multipart/form-data'); } });
这是请求和相应的响应:
请求网址:https://graph-video.facebook.com/[my page id]/videos 请求方法:POST 状态码:400 错误请求
请求标头 接受:*/* 接受编码:gzip、deflate、sdch 接受语言:en-US,en;q=0.8 缓存控制:无缓存 连接:保持活动 内容长度:948 内容类型:multipart/form-data Cookie:[一些 cookie 数据] 主持人:graph-video.facebook.com 来源:http://real.domain.com:8090 杂注:无缓存 参考:http://real.domain.com:8090/test/upload 用户代理:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36 请求有效载荷 ------WebKitFormBoundaryd8laVBo5HXRTFJnn 内容处置:表单数据;名称="来源" https://cdn.whodaman.net/Q45rt7y.mp4 ------WebKitFormBoundaryd8laVBo5HXRTFJnn 内容处置:表单数据;名称="access_token" [我的访问令牌] ------WebKitFormBoundaryd8laVBo5HXRTFJnn 内容处置:表单数据;名称=“标题” 测试视频 ------WebKitFormBoundaryd8laVBo5HXRTFJnn-- 响应标头 访问控制允许来源:* 缓存控制:无存储 连接:保持活动 内容长度:146 内容类型:应用程序/json;字符集=UTF-8 日期:2013 年 11 月 11 日星期一 13:50:45 GMT 过期时间:2000 年 1 月 1 日星期六 00:00:00 GMT 杂注:无缓存 " WWW-Authenticate:OAuth "Facebook Platform" "invalid_token" "请求此资源需要访问令牌。 X-FB-调试:HlhHF7eIBkLbUBktqeWnVv8V3viIeS8jom0WPt1D7fc= X-FB-Rev:1000997
Facebook 正在请求访问令牌!我很确定我有正确的,因为我能够添加文本状态帖子。我还尝试将file
表单数据中的参数名称从source
更改file
为无效。
那么甚至可以直接从视频网址通过 js sdk 将视频上传到 Facebook 吗?我有一种感觉,并且非常接近解决方案。