使用PHP SDK获取最新的Facebook帖子 [英] Get latest Facebook posts of page with PHP SDK

查看:214
本文介绍了使用PHP SDK获取最新的Facebook帖子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下代码在一个名为facebook_posts.php的文件中,我从我的索引文件中调用,如下所示:<?php require_once(http://www.example.com/design/php /facebook_posts.php); ?> 。但是,这个代码放在哪里,没有任何的回应。所以既不成功也不捕获错误返回错误(正如我所看到的)。我尝试了绝对URL,但是也没有。 (我隐藏了api和页面信息。)显然,require_once(脚注和脚本)之后的内容没有加载。包含SDK时似乎出错了。

The following code is inside a file called facebook_posts.php which I call from my index file like so: <?php require_once("http://www.example.com/design/php/facebook_posts.php"); ?>. However, where this code is put, there is no response. So neither success, nor the catch errors return an error (as I see it). I tried absolute URLs, but that didn't work either. (I hid the api and page information.) Apparently the content that follows the require_once (footer and scripts) aren't loaded. Something seems to go wrong when including the SDK.

我没有使用作曲家,我需要 require Facebook\ 文件或使用?我需要哪一个从页面检索帖子?

I'm not using composer, do I need to require the Facebook\ files or use them? And which ones do I need for retrieving posts from a page?

<?php
// Defining FB SDK with absolute paths
define('FACEBOOK_SDK_V4_SRC_DIR', 'http://example.com/design/Facebook/');
require 'http://example.com/design/php/autoload.php';

use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRequestException;

FacebookSession::setDefaultApplication('{my-app-id}','{my-app-secret}');

$session = new FacebookSession('{my-long-lived-access-token}');

// Get the GraphUser object for the current user:

try {
$request = new FacebookRequest(
  $session,
  'GET',
  '/{my-page-id}/feed'
);
$response = $request->execute();
$graphObject = $response->getGraphObject();

var_dump($graphObject);
echo graphObject;
echo "banana";

} catch (FacebookRequestException $e) {
  echo "API ERROR";
} catch (\Exception $e) {
  echo "other error";
}

?>

编辑:所以我只是需要所有的FB文件,这似乎有效。但是,我不知道如何遍历/迭代返回的对象。即如何循环浏览不同的帖子(页面的四个最新帖子),并以HTML形式回显。基本结构将如下所示:

so I just required in all the FB files, and that seems to work. However, I don't know how to traverse/iterate the object that is returned. I.e. how to loop through the different posts (the four latest posts by the page) and echo them in HTML. A base structure would look like this:

<time>{publish date}</time>
<p>{post message}</p>
<a href="{link to included url}">{title to included url}</a>


推荐答案

您需要使用长寿命的页面访问 - 令牌。

You need to use a long-lived page access-token.


页面访问令牌



这些访问令牌类似于用户访问
令牌,除了他们提供读取,写
或修改属于Facebook页面的数据的API的权限。要获取页面
访问令牌,您需要从获取用户访问令牌开始,
要求manage_pages权限。一旦您有用户访问
令牌,您就可以通过Graph API获取页面访问令牌。

Page Access Token

These access tokens are similar to user access tokens, except that they provide permission to APIs that read, write or modify the data belonging to a Facebook Page. To obtain a page access token you need to start by obtaining a user access token and asking for the manage_pages permission. Once you have the user access token you then get the page access token via the Graph API.

As @CBroe说,您不应该在客户端代码中使用该访问令牌,因为它是秘密/私有的,并且您不希望任何人得到它。

As @CBroe said, you should not use that access token in client-side code as it is secret/private and you don't want anyone to get it.

所以为了你想要的要做,Javascript不是正确的选择。您将不得不使用一些服务器端代码,如PHP,Python或Ruby来获取帖子。如果这样很清楚,那么你可以创建它。

So for what you want to do, Javascript is not the right choice. You will have to use some server-side code, like PHP, Python or Ruby to get the posts. If that is clear, here is how you can create it.


  1. 创建一个Facebook应用程序:

  1. Create a Facebook app:


  • 保持应用程序ID (1)和应用程序秘密(2)另存为

  • 在高级设置中,激活OAuth以避免应用程序已禁用OAuth客户端流程

  • keep the app id (1) and app secret (2) aside,
  • in the "advanced" settings, activate OAuth in order to avoid The application has disabled OAuth client flow.

您需要创建一个用户访问令牌。

You need to create a user access token.


  • 继续浏览 Graph API Explorer ,然后选择刚创建的应用程序,

  • 生成访问令牌:单击获取访问令牌,然后在扩展权限选项卡中勾选 manage_pages

  • go on the Graph API Explorer and select the application you just created,
  • generate an access token: click "Get access token" and tick manage_pages in the "Extended Permissions" tab.

获取您的短期页面访问令牌


  • 仍然在Graph API资源管理器中,查询 me / accounts GET ),

  • 找到您的页面并获取其访问令牌(3)

  • still in the Graph API explorer, query me/accounts (GET),
  • find your page and get its access token (3).

获取您长期访问的页面访问令牌


  • ,粘贴 https://graph.facebook.com/oauth/access_token?client_id=( 1)& client_secret =(2)& grant_type = fb_exchange_token& fb_exchange_token =(3)在地址栏中

  • 替换(1) (2)(3),通过您的应用ID,您的应用密钥和您的页面访问令牌

  • 从结果中获得新的长期访问令牌:的access_token = FAKECAALBygJ4juoBAJyb8Cbq9bvwPYQwIaX53fLTMAWZCmDan1netI30khjITZAqcw9uE0lRT4ayWGm2ZCS7s7aZCVhF3ei6m0fuy2AkTkwmzUiJI4NUOZAyZAzuL

  • 使用的访问令牌调试器验证您的访问令牌将不要过期

  • in your browser, paste https://graph.facebook.com/oauth/access_token?client_id=(1)&client_secret=(2)&grant_type=fb_exchange_token&fb_exchange_token=(3) in the address bar,
  • replace (1), (2) and (3) by your app id, your app secret and your page access token,
  • get your new long-lived access token from the result: access_token=FAKECAALBygJ4juoBAJyb8Cbq9bvwPYQwIaX53fLTMAWZCmDan1netI30khjITZAqcw9uE0lRT4ayWGm2ZCS7s7aZCVhF3ei6m0fuy2AkTkwmzUiJI4NUOZAyZAzuL,
  • use the Access Token Debugger to verify that your access token will never expire.






现在您可以使用新的访问令牌来检索页面的帖子:


Now you can use that new access token to retrieve the posts of your page:

$session = new FacebookSession('FAKECAALBygJ4juoBAJyb8Cbq9bvwPYQwIaX53fLTMAWZCmDan1netI30khjITZAqcw9uE0lRT4ayWGm2ZCS7s7aZCVhF3ei6m0fuy2AkTkwmzUiJI4NUOZAyZAzuL');

try {
    $data = (new FacebookRequest(
        $session, 'GET', '/me/posts'
    ))->execute()->getGraphObject()->getPropertyAsArray("data");

    foreach ($data as $post){
        $postId = $post->getProperty('id');
        $postMessage = $post->getProperty('message');
        print "$postId - $postMessage <br />";
    }
} catch (FacebookRequestException $e) {
    // The Graph API returned an error
} catch (\Exception $e) {
    // Some other error occurred
}

这篇关于使用PHP SDK获取最新的Facebook帖子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆