【问题标题】:How to get the stream of a public Facebook fanpage in php?如何在 php 中获取公共 Facebook 粉丝页面的流?
【发布时间】:2011-01-03 17:00:23
【问题描述】:

我想通过 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'

我一无所知:)

【问题讨论】:

    标签: php facebook stream


    【解决方案1】:

    这就是我所做的

    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);
    

    因此,基本上,这将从您的“视角”获取提要,但仅过滤它以显示来自指定粉丝页面的项目。

    免责声明:这行得通,但我不确定这是否是一种“受支持”的获取数据的方法,甚至根本不被允许。

    参考资料:

    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/

    【讨论】:

    • 生成密钥代码后,我收到以下消息:成功!您的一次性代码是 XXXXXX 要让自己永久登录到 APP_NAME ,您应该将此代码提供给应用程序。我如何将其提供给应用程序?因为现在,每次我进行 api 调用时,我都必须重新生成这段代码。我尝试了几次,现在我得到了这个错误:未捕获的异常 'FacebookRestClientException' with message 'Invalid parameter'
    • 生成keycdode(步骤4)后,您使用步骤5中的代码生成一个具有无限会话密钥的数组,您只需执行一次。然后,您在第 6 步中使用无限会话密钥(其中显示 YOUR_INFINITE_KEY),这就是您将其提供给应用程序的方式,您这样做了吗?
    • 好的,所以我重新执行了这些步骤。我生成了密钥代码。然后我提供了我的 user_id,会话密钥并将 expires 设置为 0。没有错误。但是当我尝试执行 API 调用时,例如 stream_get() 或 fql_query,我收到此错误:致命错误:未捕获的异常 'FacebookRestClientException' 带有消息'不正确的签名'顺便说一句:我在 localhost 上执行此操作
    • 好的,我想我到了某个地方,我将我的应用类型设置为网站而不是桌面,我得到了一些结果
    【解决方案2】:

    好的,我尝试了很多次,但是当我在代码中添加 QUOTES 时它起作用了。

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

    感谢您的建议!

    【讨论】:

      【解决方案3】:

      您的代码中需要 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); 
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-31
        • 2011-04-03
        • 2023-03-07
        • 2013-04-26
        • 1970-01-01
        • 2012-01-25
        • 1970-01-01
        • 2011-08-14
        相关资源
        最近更新 更多