【问题标题】:Facebook Graph API get page post's attachmentsFacebook Graph API 获取页面帖子的附件
【发布时间】:2015-08-16 19:45:42
【问题描述】:

我正在尝试获取 facebook 页面发布的图像附件的 url。目标是将该图像嵌入网页中,以便网站始终显示该页面发布的最后一个图像附件。我拥有网站和 FB 页面。

我还没有掌握处理 Facebook Graph API 的所有细节,但这是我目前所做的:

1) 在 FB 开发者网站中,我创建了一个应用程序,获取其 App ID 和密码;

2) 我使用该信息获取访问令牌(刚刚在我的浏览器中粘贴以下代码:

https://graph.facebook.com/oauth/access_token?client_id={my-client-id}&client_secret={my-client-secret}&grant_type=client_credentials

3) 在我的网站中,我在 body 标签之后加载了 Facebook JS SDK;并从 Facebook 页面管理处获得了我的 Facebook 页面 ID;

4) 现在真正的问题开始了:我如何查询 Facebook 以获取我需要的信息 - 最后发布的图像的源 URL?

到目前为止,我得到的最好结果是在 jQuery 的帮助下进行 getJSON 调用:

var fbfeed = $j.getJSON('https://graph.facebook.com/{my-page-id}/feed?access_token={my-token}&fields=attachments&limit=1');

这将在 fbfeed 变量中获取并存储一个 JSON 数组(如果我错了,请纠正我)。该数组的其中一个键称为“src”,其中包含附件的源 url——我需要将该图片嵌入到我的网站中的信息;

我有以下问题/疑虑: - 我还没有找到检索“url”键值的方法——我该怎么做?如何解析 fbfeed 变量并提取“url”键的值?

– 我对访问令牌的使用感到担忧:

  • 通过在 jQuery 函数中使用访问令牌以这种方式公开访问令牌是否有问题?是否存在安全风险?如果是这样,我可以“模仿”这个请求,但使用 PHP 等服务器端语言吗?

  • 此访问令牌是否会过期(即我是否需要不时重复第 2 步?)。那么,想象一下我可以让它工作,我是否需要不时“刷新”访问令牌?

感谢您的帮助。

【问题讨论】:

  • 是的,访问令牌不应该以这种方式暴露在客户端代码中;如果您只想在客户端执行此操作,那么您应该让查看用户登录到您的应用程序,以便您可以使用他们自己的访问令牌。当然,您也可以在服务器端发出此请求。 // 用户访问令牌的有效期最长为 60 天,之后您必须续订。最好先使用页面访问令牌。 (同样,这当然不属于任何客户端代码。)

标签: json facebook facebook-graph-api facebook-javascript-sdk facebook-php-sdk


【解决方案1】:

我已经设法使用服务器端代码获取我需要的信息,尽管它可能不是最“干净的解决方案”:它会遍历我页面的最后 5 个帖子,直到找到一张图片和一个帖子网址:

<?php
$url = 'https://graph.facebook.com/{page-id}/feed?access_token={access-token}&fields=attachments,link&limit=5';
$json = file_get_contents($url);
$json_data = json_decode($json, true);

for($count = 0; $count < 5; $count++) {

$imagesource =  $json_data['data'][$count]['attachments']['data'][0]['media']['image']['src']; // gets the image url

$postlink = $json_data['data'][$count]['link']; // gets the post url

if (isset($imagesource) && isset($postlink)) {
    // do stuff with the image and post url
    break;
    };

};

// then I can do other stuff as fallback if the image url and post url are not found

【讨论】:

  • 是的!对我来说,这都是关于字段=附件的!感谢您用答案更新您自己的问题!
猜你喜欢
  • 2022-09-26
  • 1970-01-01
  • 2017-07-30
  • 1970-01-01
  • 1970-01-01
  • 2018-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多