【问题标题】:Facebook API works, but not with codeigniter?Facebook API 有效,但不适用于 codeigniter?
【发布时间】:2012-06-19 18:11:10
【问题描述】:

我正在开发一个使用 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。我错过了什么?

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

【问题讨论】:

    标签: php codeigniter facebook-php-sdk


    【解决方案1】:

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

    $config['uri_protocol'] = 
        (isset($_SERVER['HTTP_REFERER']) && 
         strpos($_SERVER['HTTP_REFERER'], 'apps.facebook.com') !== false) ? 
             "PATH_INFO" : "REQUEST_URI";
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 是的,实际上加载 Facebook API 没有问题 - 正如我在下面的回答中所述,如果推荐人是 facebook,我将 uri_protocol 更改为 PATH_INFO,否则将更改为 REQUEST_URI。无论如何,感谢您的回答!
      猜你喜欢
      • 1970-01-01
      • 2015-08-13
      • 1970-01-01
      • 2019-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多