Facebook API的require_login与CodeIgniter一起使用

时间:2010-02-03 08:47:36

标签: php facebook codeigniter

目前,如果我使用facebook的require_login,它似乎会进入追加到url的无限循环。我的所有控制器都继承自构造时的FB_Controller:

$this->facebook = new Facebook($this->API_KEY, $secret);
$this->uid = $this->facebook->require_login(); //Causes infinite loop!

我必须将Facebook上的画布回调URL显式设置为http://decider.dfgh.org/ask/index/(其中ask是我想要的默认控制器),否则我会收到404错误。我也在使用iframe渲染方法。

在CodeIgniter上我有典型的mod_rewrite来摆脱index.php,$ config ['uri_protocol'] =“REQUEST_URI”,$ config ['enable_query_strings'] = TRUE。后两种配置我必须设置为简单链接才能工作(单击像http://decider.dfgh.org/decide/这样的链接不起作用,它只会导航到当前页面。)

2 个答案:

答案 0 :(得分:1)

我只是将uri_protocol设置为request_url或path_info,具体取决于referrer标头。所以在config.php中我有:

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

我承认并不是最漂亮的,但它确实有效。

答案 1 :(得分:0)

我将此添加到我的配置文件中以执行完全相同的操作:

/ * Facebook Connect hack * / if(isset($ _ SERVER ['HTTP_REFERER'])&& strpos($ _ SERVER ['HTTP_REFERER'],'facebook.com')!== false) {     $ config ['uri_protocol'] ='PATH_INFO'; } else {     $ config ['uri_protocol'] ='REQUEST_URI'; }