从图Api

时间:2016-03-05 11:09:04

标签: facebook facebook-graph-api

我目前遇到以下问题:

我正在建立一个系统,我可以使用它来处理来自Facebook的服务请求。我通过此请求获得了我页面上的所有对话:

PAGE_ID/conversations?fields=messages{message, attachments}

当消息是图像时,返回以下数据(例如):

{
        "message": "",
        "attachments": {
          "data": [
            {
              "id": "IMAGE_ID",
              "mime_type": "image/jpeg",
              "name": "IMAGE_NAME.jpg",
              "size": null,
              "image_data": {
                "width": 720,
                "height": 960,
                "render_as_sticker": false,
                "url": "https://scontent.xx.fbcdn.net/hphotos-xpl1/v/wl/t34.0-12/IMAGE_NAME.jpg?oh=SOME_CHANGING_STRING&oe=SOME_OTHER_CHANGING_STRING",
                "image_type": 1,
                "max_width": 720,
                "max_height": 960
              }
            }
          ]
        },
        "id": "MESSAGE_ID"
}, ...

我首先将图片网址存储在我自己的数据库中,但是在一天之后,网址在上面数据中指示的部分中发生了变化。所以我最初的计划是对图谱API做一个额外的请求,以获取新的URL:

MESSAGE_ID/attachments

但问题是我无法通过此请求获取图像数据,字段' image_data'找不到。除了再次检查会话边缘之外,我似乎找不到另一种获取更新图像URL的方法(由于此请求的延迟,这不是理想的。)

有没有人知道如何有效地获取新图像网址?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

没有其他办法。 image_data仅在会话端点上可用。但是,为什么不简单地下载附件并将其保存在服务器上,而不仅仅是存储CDN缓存URL?附件不太可能更改,因此这是您唯一的选择,除非您想要一次又一次地更新所有会话,只是为了检索当前的CDN缓存URL。

附注:您只能获取图像的URL,但不能获取其他附件(例如PDF)。