Facebook Graph API获取页面帖子的附件

时间:2015-08-16 19:45:43

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

我正在尝试获取Facebook页面发布的图像附件的网址。目标是将该图像嵌入网页中,以便网站始终显示页面发布的最后一个图像附件。我拥有网站和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)?那么,想象我可以让它工作,我是否需要不时“刷新”访问令牌?

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

我已经设法使用服务器端代码获取了我需要的信息,虽然它可能不是最干净的解决方案"它会迭代我页面的最后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