编写一个WordPress插件并尝试包含Facebook PHP SDK

时间:2013-12-13 作者:Robbiegod

我正在为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\'
);

2 个回复
最合适的回答,由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,并仅第一次请求读取流的权限。

SO网友:Health Coah

特别感谢@Azhar Munshi非常感谢我遇到了同样的问题,但现在在我尝试session_start(); 之前include(\'src/facebook.php\'); 错误消失:)

结束