2010-02-03 3 views
2

В настоящее время, если я использую require_login facebook, он, похоже, переходит в бесконечный цикл добавления к URL-адресу. Все мои контроллеров наследовать от FB_Controller, что при строительстве делает:Facebook API требует_login для работы с CodeIgniter

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

Я должен был явно установить обратный вызов URL холста на Facebook, чтобы http://decider.dfgh.org/ask/index/ (где спрашивают мой нужный контроллер по умолчанию), либо я получаю 404 ошибки. Также я использую метод рендеринга iframe.

На CodeIgniter У меня есть типичный mod_rewrite, чтобы избавиться от index.php, $ config ['uri_protocol'] = "REQUEST_URI", $ config ['enable_query_strings'] = TRUE. Последние две конфигурации, которые я должен был установить, чтобы получить простое соединение для работы (щелчок по ссылке, такой как http://decider.dfgh.org/decide/, не работает, она просто перейдет к текущей странице).

ответ

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"; 

Не самое красивое, что я признаю, но оно работает.

0

Я добавил это в мой конфигурационный файл, чтобы сделать ту же самую вещь:

/* Facebook Connect взламывать */ если (Исеть ($ _ SERVER [ 'HTTP_REFERER']) & & StrPos ($ _ SERVER [» HTTP_REFERER '],' facebook.com ')! == false) { $ config [' uri_protocol '] =' PATH_INFO '; } else { $ config ['uri_protocol'] = 'REQUEST_URI'; }