0

我正在开发一个使用 Facebook API 让用户登录的网站,但我在使用 Facebook API 本身时遇到了一些莫名其妙的问题。我认为这是使用 CodeIgniter 的结果。

我添加了一个不使用 Codeigniter 的 PHP 脚本,它可以连接。它看起来像这样:

require_once("application/libraries/Facebook/facebook.php");

$facebook = new Facebook(array(
        'appId'  => 'appid-removed-for-question',
        'secret' => 'secret-removed-for-question',
));

$user = $facebook->getUser();
echo $user;

这会从 Facebook 返回相应的 UID。

一旦我尝试使用 CodeIgniter 库执行此操作,UID 始终返回为 0。这是库代码:

include(APPPATH.'libraries/Facebook/facebook.php');

class Fb_connect extends Facebook{

    public $user;

    public function __construct()
    {
        $CI =& get_instance();
        $CI->config->load("facebook",TRUE);
        $config = $CI->config->item('facebook');
        parent::__construct($config);

        $this->user = $this->getUser();
        echo $this->user;
    }
}

我在配置文件中对我的 appid 和 secret 进行了双重和三重检查,甚至在此处回显它以确保它作为数组正确通过,但仍然没有。 $this->user;不断为 UID 返回 0。我错过了什么?

我刚刚看到这个问题,它谈到了 uri_protocol 是问题,但我必须首先设置$config['uri_protocol'] = 'QUERY_STRING';让我的 mod_rewrite 脚本工作,这让我想知道它是否是同一个问题。有什么建议吗?

4

2 回答 2

0

我链接到的问题的答案实际上为我解决了这个问题:

$config['uri_protocol'] = 
    (isset($_SERVER['HTTP_REFERER']) && 
     strpos($_SERVER['HTTP_REFERER'], 'apps.facebook.com') !== false) ? 
         "PATH_INFO" : "REQUEST_URI";
于 2012-06-19T18:14:34.960 回答
0

使用这个.. require_once($_SERVER['DOCUMENT_ROOT']."/".$this->config->item('app_folder_path')."application/libraries/Facebook/facebook.php");

确保您在 config.php 文件中设置了 app_folder_path 配置变量。

于 2012-06-20T11:20:48.390 回答