[英]facebook graph-api
我想从Facebook检索外部网页的最新粉丝专页更新。
似乎有两个问题...
一个,似乎访问令牌在一小时后过期,有没有办法获取永久访问令牌?
其次,我想获取页面所有者(包含“消息”字段的帖子)的最后10个帖子的json字符串。
例如,如果我使用“ https://graph.facebook.com/stackexchange/posts?fields=message&limit=10 ”,它将返回不包含消息字段的行。 有没有办法过滤这些?
也许有一种方法可以使用FQL查询来检索?
如果您的页面没有任何限制,则可以使用永久性应用访问令牌获取此数据。 如果您使用的是服务器端SDK之一,它们将自动为您提供一个。
如果您未使用SDK,或者正在使用JavaScript编写,则文档的“ 作为应用程序登录”部分将引导您完成此过程。
通过此方法获得的访问令牌将一直存在,直到您更改应用程序密码为止。
如果页面有年龄和/或国家/地区限制,则您需要用户访问令牌才能通过API获取数据。 根据TOS,您应该对每个用户进行身份验证,并且仅在他们满足页面所有者设置的限制时才向他们显示结果。
最好通过FQL来获取页面上的最后10条帖子。 试试这个查询:
SELECT created_time, message, attachment FROM stream WHERE
source_id = YOUR_PAGE_ID AND filter_key = "owner" AND message != "" LIMIT 10
关于永久访问令牌:我认为您正在寻找App Access令牌。 阅读更多: https : //developers.facebook.com/docs/technical-guides/opengraph/publishing-with-app-token/
关于第二个问题:从输出中,检查是否存在“消息”密钥。 如果不是,则排除该条目。 在PHP中,有一个函数array_key_exists用于执行此操作。
好了,您可以尝试让Facebook页面( $pageId
)的一位管理员授权您的应用程序( $fbAppId
):
<script>
var oauth_url = 'https://www.facebook.com/dialog/oauth/';
oauth_url += '?client_id=<?php echo $fbAppId; ?>';
oauth_url += '&redirect_uri=' + encodeURIComponent('https://www.facebook.com/pages/null/<?php echo $pageId; ?>/?sk=app_<?php echo $fbAppId; ?>');
oauth_url += '&scope=manage_pages'
window.top.location = oauth_url;
</script>
当他们授权时,您可以使用签名请求( $signedRequest = $facebook->getSignedRequest();
)请求持久令牌,您将获得:
$url = 'https://graph.facebook.com/oauth/access_token?client_id=' . $fbAppId . '&client_secret=' . $appSecret . '&grant_type=fb_exchange_token&fb_exchange_token=' . $signedRequest['oauth_token'];
cURL此URL并获取生成的access_token:
$access_token = substr($response, strlen('access_token='));
将其保存到您的数据库。 这样,您可以获得帖子:
$graphUrl = '/' . $pageId . '/posts?access_token=' . $accessToken;
$posts = $this->facebook->api($graphUrl, 'GET');
我不知道这个access_token会过期多久。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.