我正在使用来自react-native-fbsdk
的GraphRequest从我的应用发布到FB。具体来说,我试图发布一个外部托管的mp4视频的链接,所以在https://img.myapp.com/image_id.mp4
这样的网址上。这是我的请求的代码:
return new Promise(function(resolve, reject) {
const post = new GraphRequest('/me/feed', {
httpMethod: 'GET',
version: 'v2.9',
...payload,
}, (err, result) => {
if (err) {
reject(err);
}
resolve();
});
new GraphRequestManager().addRequest(post).start();
});
这是payload
:
{
httpMethod: 'POST',
parameters: {
type: { string: 'article' },
message: { string: message || '' },
caption: { string: 'Powered by MyApp' },
link: { string: media.url },
ref: { string: uuid },
picture: { string: media.url },
source: { string: media.url },
properties: [
{ name: { string: 'type' }, text: { string: 'video.other' } },
],
}
我的核心问题是我想将一个mp4链接发布到FB并查看视频循环(因为它只有几秒钟)。我很确定这个properties
属性是我应该指定类型,高度,宽度和其他属性的地方,我会在其他地方添加元标记以传递有关链接中视频的信息。然而,
用properties
写下我的方式我得到了这个错误:graph api Error: Unexpected value for parameter 'properties'. Request parameters need to be objects with a 'string' field.
以下是图谱API中的properties
块的屏幕截图 - POST文档(https://developers.facebook.com/docs/graph-api/reference/v2.11/post):
我已经尝试过这个对象(或数组?)的许多不同配置,并且它们都会返回此错误。有没有人熟悉使用GraphRequest发布mp4视频,或者至少可以告诉我如何使用properties
参数?提前谢谢!
答案 0 :(得分:1)
要让MP4显示为可在线播放的视频(并且对于已启用它的用户,请在新闻Feed中自动播放),您需要在发布视频之前上传该视频。
由于您提到过来自外部链接的帖子,只要您至少定位到图谱API的2.3版本,您就可以将URL发送到视频文件而不是上传原始数据。需要注意的一个限制是,您提供的URL上的视频需要在5分钟内通过Facebook的刮刀下载。如果您有大型视频或慢速服务器,最好使用分块上传过程。
以下是有关视频上传过程的更多信息:https://wandbox.org/permlink/oBoe871dmfo1AP37
要开始使用,请确保使用/videos
端点而不是/feed
:
new GraphRequest('/me/videos'
您使用的参数与/feed
端点略有不同,可在此处引用:https://developers.facebook.com/docs/graph-api/video-uploads
您希望专门查看您要将视频文件发送到您的视频文件的file_url
参数,以及is_explicit_share
参数,如果您想要视频的话自动发布到用户的新闻Feed。您可以使用description
代替message
,并且您提供的文字会显示在墙上的帖子中。与原始代码一起使用:
httpMethod: 'POST',
parameters: {
file_url: { string: media.url },
description: { string: message || '' },
is_explicit_share: { string: 'true' },
...
}