我正在为Wordpress编写一个插件,它需要Facebook PHP SDK。从一年多前我发现的结果来看,我遇到了一个常见的问题。不幸的是,我一直无法找到解决方案。
我使用的是Wordpress 3.8和从github获得的Facebook PHP SDK Master,所以这应该是最新版本。实际上,我已经在Wordpress之外运行了相同的代码,它成功地运行了,没有出现任何错误。
所以,我上传我的插件并激活它。我转到我构建的面板,该面板要求提供appID和密钥,以及facebook帐户的用户名。插件所要做的就是获取用户名me feed。
因此,当我尝试运行加载提要的主函数时,会出现以下错误:
警告:session\\u start()[函数.session start]:无法发送会话cookie-标头已由{path}/wp admin/includes/template.php:1698)中的{path}/wp content/plugins/{mypluginname}/facebook php-sdk/src/facebook发送。php在线48
警告:session\\u start()[函数.session start]:无法发送会话缓存限制器-在{path}/wp-admin/includes/template.php:1698)中的{path}/wp-content/plugins/{mypluginname}/facebook-php-sdk/src/facebook中已发送头(输出开始于{path}/wp-admin/includes/template.php:1698)。php在线48
What I\'ve tried
因此,我在几篇不同的帖子中读到,我应该使用ob\\u start()和ob\\u end\\u flush()php函数,这将解决问题。据我所知,我遇到的问题是,我正在将内容发送到不应该发送的标题,因为标题已经发送了。
我在插件的顶部和底部尝试了ob\\u start/ob\\u end\\u flush,结果没有什么不同。
我尝试下载Facebook wordpress插件,并使用该插件使用的修改过的Facebook PHP SDK,该SDK消除了这些错误,但产生了一个新错误。
致命错误:访问未声明的静态属性:WP\\u BaseFacebook::$CURL\\u OPTS in{path}/WP content/plugins/{pluginname}/facebook php sdk/src/base\\u facebook。php在线932
所以,我读到这是因为没有启用CURL。我已经检查了我的PHP信息页面,并启用了CURL。我在另一个插件中使用curl请求。我确实在CURL特性下看到了一些未启用的东西。有人知道我需要启用哪个选项才能使这个修改版本的Facebook PHP SDK与我的插件一起工作吗?
是否有人知道如何修复我从标准Facebook PHP SDK中获得的错误,或者有人知道如何修复我从修改后的Facebook PHP SDK中获得的错误?
提前谢谢。我希望找到解决这两个问题的办法,然后最终解决这个问题。自2011年以来,我们一直受到同样问题的困扰。
为了提供更多细节,这里是我插件中的部分代码。
require_once(\'facebook-php-sdk/src/facebook.php\');
global $facebook; // read that i needed to add this line to my script; it didnt help.
// Create our Application instance (replace this with your appId and secret).
$fb_config = array(
\'appId\' => $ijFaceFeedAppID,
\'secret\' => $ijFaceFeedSecretKey,
\'fileUpload\' => false,
\'allowSignedRequest\' => false
);
// get feed
$facebook = new WP_Facebook($fb_config); // am using the modified facebook sdk
$page_feed = $facebook->api(
\'/\'.$ijFaceFeedUser.\'/feed\',
\'GET\'
);
最合适的回答,由SO网友:Azhar Munshi 整理而成
首先从下载facebook php sdk的zipFacebook PHP SDK from Github.com
解压缩zip文件夹,您只需要“src”文件夹就可以将facebook应用程序集成到插件中。
复制“src”文件夹并将其粘贴到插件目录中。
在插件安装程序文件中,首先通过写入session_start()
然后包括facebook。src文件夹中的php文件。像这样:
session\\u start();包括(\'src/facebook.php\');
现在按照下面的代码操作。
session_start();
include(\'src/facebook.php\');
$config = array(\'appId\' => \'Your APP ID\', \'secret\'=> \'Your App Secret\');
$connect = new Facebook($config);
$user = $connect->getUser();
$me = null;
if($user)
{
try
{
$me = $connect->api(\'/me\');
}
catch(FacebookApiException $e)
{
echo $e->getMessage();
}
}
if($me)
{
$logoutUrl = $connect->getLogoutUrl();
echo "Logout";
}
else
{
//as the facebook php sdk version is 3 so there is some change for permissions
// If you want to add permission for read_streams so that pass array with login url
$params = array(\'scope\'=>\'read_stream\');
$loginUrl = $connect->getLoginUrl($params);
echo "Login";
}
现在,您可以登录facebook,并仅第一次请求读取流的权限。