![](/img/trans.png)
[英]how to publish post on facebook page wall as admin using facebook php sdk v4 and graph api 2.x
[英]Facebook Graph API PHP SDK v4 - Post on Page
我想让我所有的网站作者有机会在我们的 facebook 页面上发布他们的文章,而无需让他们管理员访问它。
所以我创建了一个简单的表单,作者在其中输入:URL、图像的 URL、消息
提交时,此表单将向 facebook.php 发送一个 ajax 请求,其中“应该”发生魔法。
第一个问题发生在“require_once”。 不可能在没有错误的情况下要求所有 4 个文件。 如果我摆脱了 facebook 异常,那么除了请求本身之外,一切都正常。 似乎有一个 PHP 错误,因为我根本没有收到 ajax 响应。
session_start();
require_once($_SERVER['DOCUMENT_ROOT'].'/sys/facebook/FacebookSession.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/sys/facebook/FacebookRequest.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/sys/facebook/GraphObject.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/sys/facebook/FacebookRequestException.php');
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphObject;
use Facebook\FacebookRequestException;
$message = safe($_POST["message"]);
$url = safe($_POST["url"]);
$image = safe($_POST["image"]);
if($message == "" OR $url == "" OR $image == ""){
echo "incomplete";
return;
}
FacebookSession::setDefaultApplication('{APP ID}','{APP SECRET}');
$session = new FacebookSession('{Page Access Token}');
if($session) {
try {
$response = (new FacebookRequest(
$session, 'POST', '/{Page ID}/feed', array(
'message' => $message,
'link' => $url,
'picture' => $image
)
))->execute()->getGraphObject();
echo "Posted with id: " . $response->getProperty('id');
} catch(FacebookRequestException $e) {
echo "Exception occured, code: " . $e->getCode();
echo " with message: " . $e->getMessage();
}
} else {
echo "No Session available!";
}
更新: 2014 年 6 月 27 日,SDK 现在为那些不能使用Composer的人提供了一个内置的自动加载器。
require __DIR__ . '/path/to/facebook-php-sdk-v4/autoload.php';
如果这不能自动为您找到路径,您可以使用FACEBOOK_SDK_V4_SRC_DIR
定义它。
define('FACEBOOK_SDK_V4_SRC_DIR', '/path/to/facebook-php-sdk-v4/src/Facebook/');
require __DIR__ . '/path/to/facebook-php-sdk-v4/autoload.php';
SDK 的内部结构依赖于您未包括的其他几个类。 这就是为什么自动加载在这里非常重要。
最好的方法是安装 composer 。 并将composer.json
文件中的 SDK 添加到项目的根目录。
{
"require" : {
"facebook/php-sdk-v4" : "4.0.*"
}
}
然后从composer.json
文件所在的命令行运行composer install
。 然后在脚本顶部包含自动加载器。
require_once __DIR__ . '/vendor/autoload.php';
自动加载这些文件的另一种方法是用rm-vanda 的这个解决方案替换顶部的require_once
:
function facebookLoader($class) {
require "/path/to/facebook-php-sdk-v4-master/src/" . str_replace("\\", "/", $class) . ".php";
}
spl_autoload_register("facebookLoader");
在这里,我得到了更新 Facebook Graph SDK 的解决方案,我对简短的回答深表歉意。
我通过取消注释更新了 php.ini 文件并启用了 fileinfo 扩展名
;extension=fileinfo
删除 ; 标记为
extension=fileinfo
然后执行命令,
composer update
致谢:StackOverflow、Bing 和 Google 搜索。 警告:我使用 Laravel、Wnmp 作为本地网络服务器。 注意:此评论可能需要修改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.