从帖子附件中获取MP4流URL

时间:2017-02-09 01:03:56

标签: facebook-graph-api

我在一个播放事件提要中的视频的应用中使用Facebook Graph API。我需要获取MP4流URL以在我的UI中播放它。有些视频在Feed中显示为顶级帖子,而source属性正是我需要的网址 - 耶!其他人显示为附件(或相册中的子附件)。对于这些,attachment.url(和attachment.target.url)指向HTML页面,而不是MP4流。例如,使用附件字段获取此特定帖子会导致:

{
  "attachments": {
    "data": [
      {
        "media": {
          "image": {
            "height": 405,
            "src": "https://scontent.xx.fbcdn.net/v/t15.0-10/s720x720/16327151_10154408614623022_6300713295200387072_n.jpg?oh=9b3b65b957e0a3b8fe4fa1429bf49d1c&oe=58FE6EE2",
            "width": 720
          }
        },
        "target": {
          "url": "https://www.facebook.com/fmyman/videos/10154408612948022/"
        },
        "type": "video_autoplay",
        "url": "https://www.facebook.com/fmyman/videos/10154408612948022/"
      }
    ]
  },
  "id": "1851001951851194_1852406911710698"
}

唉,没有MP4流URL,也没有我可以用来获取视频节点的节点ID。

我的下一个希望是URL中的数字字符串是视频节点的ID。试着这样,Facebook会回复一条错误消息,说数字字符串不是有效的节点ID。

{
  "error": {
    "message": "Unsupported get request. Object with ID '10154408612948022' does not exist, cannot be loaded due to missing permissions, or does not support this operation. Please read the Graph API documentation at https://developers.facebook.com/docs/graph-api",
    "type": "GraphMethodException",
    "code": 100,
    "fbtrace_id": "BMqL5viB2je"
  }
}

我最后的尝试是获取给定的URL并在其中的某处找到视频节点ID。再一次,没有运气。该网址指向HTML网页,但没有明显的可能是视频ID或MP4流网址。

所以我在这里,在我的智慧'结束,希望有人解决了这个问题:如何从Feed帖子附件中获取MP4流URL?

1 个答案:

答案 0 :(得分:0)

事实证明,URL中的数字字符串确实是视频节点ID。我将错误消息解释为表明它不是,而这意味着我没有访问该特定视频节点的权限(例如,如果视频创建者将其帐户配置为禁止Facebook平台访问)。

专门回答我的问题:

  1. 获取attachment.url值,例如“https://www.facebook.com/fmyman/videos/10154408612948022/”。
  2. 提取数字字符串,例如“10154408612948022”。
  3. 获取具有该ID的节点,请求source字段。
  4. 如果Facebook没有回复错误,则source字段是MP4流的网址。