我已经开始阅读Displaying Facebook posts to non-Facebook users,这有点用处,但我无法相信从Facebook获取公共资讯很难。
我希望来自的网页是公开的,您无需登录即可访问它。
我是否正确地假设我需要access_token来获取此信息,尝试访问该网址而不会导致OAuth错误。
所以流程应该是这样的(大规模,过于复杂):
假设用户不在Facebook上,您做了什么,使用通用应用程序获取Feed?
这似乎非常复杂,除了Facebook想要了解正在发生的一切之外,使用XPath进行cURL并从公共URL中删除内容会更容易。
对此的任何帮助都会很棒。
谢谢, 杰克
修改
显示此内容的编辑不完全相同。
我使用了access_token,但现在它失败了,令牌已经过期,我不能再用它来从公共墙上获取信息了。
我尝试使用其他帖子中提到的方法延长此令牌的到期日期,但是这不起作用且过期没有延长 - 我们现在在这里,带有无效的令牌而且没有进一步。
似乎必须批准OAuth请求的手动过程意味着无法以编程方式获取公共页面的提要。
答案 0 :(得分:4)
两年后,您可以通过Facebook App(使用PHP和Slim的示例)以编程方式执行此操作:https://developers.facebook.com/apps/
$base_api="https://graph.facebook.com/";
$client_id="XXXXXX";
$app_secret="XXXXXX";
//get a profile feed (can be from a page, user, event, group)
$app->get('/feed/:profileid/since/:start_date', function ($profile_id,$start_date) {
$start_time=date('m/d/Y h:i:s',$start_date);
$request = new FacebookRequest(
getSession(),
'GET',
'/'.$profile_id.'/feed?since='.$start_time
);
$response = $request->execute();
$graphObject = $response->getGraphObject();
//do something with $graphObject
});
function getSession(){
$session = new FacebookSession(getAccessToken());
return $session;
}
function getAccessToken(){
global $base_api, $client_id, $app_secret;
$url=$base_api."oauth/access_token?client_id=".$client_id."&client_secret=".$app_secret."&grant_type=client_credentials";
$str = file_get_contents($url);
$token = str_replace ( "access_token=" , "" , $str );
return $token;
}
答案 1 :(得分:0)
我在阅读没有代币等的直接饲料方面取得了一些成功。 (使用喜鹊,simplepie或querypath或类似的)。
http://www.facebook.com/feeds/page.php?format=rss20&id= ........ http://www.facebook.com/feeds/page.php?format=atom10&id= ........
答案 2 :(得分:0)
Facebook
已经改变了如何检索公共Facebook页面的订阅源。
查看我的answer/question。它不是PHP
,而是提供您需要的URLs
和流程。