如何在PHP中获取公共Facebook粉丝页面的流?

时间:2010-01-11 10:13:46

标签: php facebook stream

我想通过Facebook API在我的网站上显示我的公共粉丝专页,无需登录。

我正在做这个

require_once('../includes/classes/facebook-platform/php/facebook.php');

$fb = new Facebook($api_key, $secret);
$fb->api_client->stream_get('',$app_id,'0','0','','','','',''));

但是我收到了这个错误

 Fatal error:  Uncaught exception 'FacebookRestClientException' with message 'user id parameter or session key required' in includes/classes/facebook-platform/php/facebookapi_php5_restlib.php:3065
 Stack trace:
#0 includes/classes/facebook-platform/php/facebookapi_php5_restlib.php(1915): FacebookRestClient->call_method('facebook.stream...', Array)
#1 facebook/api.php(12): FacebookRestClient->stream_get('', 13156929019, '0', '0', 30, '', '', '', '')
#2 {main}
  thrown in includes/classes/facebook-platform/php/facebookapi_php5_restlib.php on line 3065

然后我想,因为'需要'用户ID参数或会话密钥',才能将我的用户ID添加到呼叫中

require_once('../includes/classes/facebook-platform/php/facebook.php');

$fb = new Facebook($api_key, $secret);
$fb->api_client->stream_get(502945616,13156929019,$app_id,'0','0','','','','',''));

但后来我收到了这个错误

Fatal error:  Uncaught exception 'FacebookRestClientException' with message 'Session key invalid or no longer valid'

我完全无能道:)

3 个答案:

答案 0 :(得分:3)

这就是我做的事情

1)登录facebook。

2)授予您的应用程序离线访问您的帐户的权限: http://m.facebook.com/authorize.php?api_key=YOUR_API_KEY&v=1.0&ext_perm=offline_access

3)添加读取流权限 http://m.facebook.com/authorize.php?api_key=YOUR_API_KEY&v=1.0&ext_perm=read_stream

4)生成密钥代码 http://www.facebook.com/code_gen.php?v=1.0&api_key=YOUR_API_KEY

5)运行此脚本一次并复制“session_key”。

$facebook = new Facebook($api_key, $api_secret);
$infinite_key = $facebook->api_client->auth_getSession(YOUR_KEY_CODE);
print_r($infinite_key);

6)即插即用!

$facebook->api_client->user = YOUR_FACEBOOK_USER_ID
$facebook->api_client->session_key = YOUR_INFINITE_KEY
$facebook->api_client->expires = 0;
$feed = $facebook->api_client->stream_get(YOUR_FACEBOOK_USER_ID, FAN_PAGE_ID);

所以,基本上,这会从您的“视角”获取Feed,但只过滤它以显示指定粉丝页面中的项目。

免责声明:这有效,但我不确定这是否是一种“支持”的方法来获取数据,甚至根本不允许这样做。

参考文献:

http://www.emcro.com/blog/2009/01/facebook-infinite-session-keys-no-more/

http://blog.jylin.com/2009/10/01/loading-wall-posts-using-facebookstream_get/

答案 1 :(得分:0)

好的,我尝试了很多次,但是当我将QUOTES添加到代码中时它就有用了。

$infinite_key = $facebook->api_client->auth_getSession('YOUR_KEY_CODE');

感谢您的建议!

答案 2 :(得分:0)

您需要在代码中使用Facebook库,最好说APP_ID不是API_KEY。

<?php 
require_once('facebook.php'); 
$facebook = new Facebook('YOUR_APP_ID', 'YOUR_APP_SECRET'); 
$infinite_key = $facebook->api_client->auth_getSession('YOUR_KEY_CODE');
print_r($infinite_key); 
?>