繁体   English   中英

Facebook图形API

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM