Bra*_*roy 10 php facebook fetch facebook-graph-api facebook-php-sdk
下面的代码位于一个名为facebook_posts.php的文件中,我从索引文件中调用它,如下所示:<?php require_once("http://www.example.com/design/php/facebook_posts.php"); ?>.但是,在放置此代码的地方,没有响应.因此,无论是成功还是捕获错误都不会返回错误(正如我所看到的).我尝试过绝对URL,但这也不起作用.(我隐藏了api和页面信息.)显然,不会加载require_once(页脚和脚本)后面的内容.包含SDK时似乎出现了问题.
我使用的不是作曲家,我需要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";
}
?>
Run Code Online (Sandbox Code Playgroud)
编辑:所以我只需要在所有的FB文件中,这似乎工作.但是,我不知道如何遍历/迭代返回的对象.即如何循环浏览不同的帖子(页面上的四个最新帖子)并在HTML中回显它们.基础结构如下所示:
<time>{publish date}</time>
<p>{post message}</p>
<a href="{link to included url}">{title to included url}</a>
Run Code Online (Sandbox Code Playgroud)
Sté*_*ert 21
您需要使用长期存在的页面访问令牌.
页面访问令牌
这些访问令牌类似于用户访问令牌,除了它们为读取,写入或修改属于Facebook页面的数据的API提供权限.要获取页面访问令牌,您需要先获取用户访问令牌并询问manage_pages权限.获得用户访问令牌后,您将通过Graph API获取页面访问令牌.
正如@CBroe所说,你不应该在客户端代码中使用该访问令牌,因为它是秘密/私有的,你不希望任何人得到它.
因此,对于您想要做的事情,Javascript不是正确的选择.您将不得不使用一些服务器端代码,如PHP,Python或Ruby来获取帖子.如果这一点很清楚,可以通过以下方式创建它.
创建一个Facebook应用程序:
The application has disabled OAuth client flow.您需要创建用户访问令牌.
manage_pages在"扩展权限"选项卡中打勾.me/accounts(GET),https://graph.facebook.com/oauth/access_token?client_id=(1)&client_secret=(2)&grant_type=fb_exchange_token&fb_exchange_token=(3)地址栏,access_token=FAKECAALBygJ4juoBAJyb8Cbq9bvwPYQwIaX53fLTMAWZCmDan1netI30khjITZAqcw9uE0lRT4ayWGm2ZCS7s7aZCVhF3ei6m0fuy2AkTkwmzUiJI4NUOZAyZAzuL,现在,您可以使用该新访问令牌来检索页面的帖子:
$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
}
Run Code Online (Sandbox Code Playgroud)
小智 19
我发现投票最多的解决方案太复杂了,只持续了2个月.
对我来说,这是使用App with Graph API 2.5的最佳解决方案:
1.-创建一个应用程序.
2.-转到:https://developers.facebook.com/tools/explorer/
3.-复制此"{ACCESS-TOKEN}"(格式为:number | hash)
重要提示:(这不是app_id | app_secret !!!)
4.-使用CURL查询URL:
(5).-等效URL:
我把所有这些放在一个非常简单的要点中:
https://gist.github.com/biojazzard/740551af0455c528f8a9