使用React Native

时间:2017-11-14 19:14:10

标签: javascript facebook-graph-api react-native mp4 react-native-fbsdk

我正在使用来自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): enter image description here

我已经尝试过这个对象(或数组?)的许多不同配置,并且它们都会返回此错误。有没有人熟悉使用GraphRequest发布mp4视频,或者至少可以告诉我如何使用properties参数?提前谢谢!

1 个答案:

答案 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' },
  ...
}