【发布时间】:2015-01-24 09:31:34
【问题描述】:
以下代码位于名为 facebook_posts.php 的文件中,我从索引文件中调用该文件,如下所示:<?php require_once("http://www.example.com/design/php/facebook_posts.php"); ?>。但是,放置此代码的位置没有响应。因此,成功和 catch 错误都不会返回错误(如我所见)。我尝试了绝对 URL,但这也不起作用。 (我隐藏了 api 和页面信息。)显然 require_once 后面的内容(页脚和脚本)没有加载。包含 SDK 时似乎出了点问题。
我没有使用 composer,我需要 require Facebook\ 文件还是 use 它们?从页面中检索帖子需要哪些?
<?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";
}
?>
编辑:所以我只是 required in 所有 FB 文件,这似乎有效。但是,我不知道如何遍历/迭代返回的对象。 IE。如何循环浏览不同的帖子(页面的四个最新帖子)并在 HTML 中回显它们。基本结构如下所示:
<time>{publish date}</time>
<p>{post message}</p>
<a href="{link to included url}">{title to included url}</a>
【问题讨论】:
-
根据developers.facebook.com/docs/graph-api/reference/v2.2/page/feed/…,您需要一个访问令牌,即使是阅读公共帖子也是如此。如果没有用户登录您的应用程序,您将没有访问令牌。您可以使用页面访问令牌 - 但您应该使用服务器端应用程序,因为在客户端代码中公开它不是一个好主意。
-
@CBroe 所以看来我必须通过页面的管理员之一提供权限。不过,我并不完全清楚这是如何完成的。我该如何授予权限?
标签: php facebook facebook-graph-api facebook-php-sdk fetch