Codeigniter 2.0 / Facebook Connect - проблема инициализации класса - PullRequest
0 голосов
/ 04 мая 2011

Я пойду вперед и буду чувствовать себя глупо перед всеми, потому что я не могу определить, в чем проблема, хотя я подозреваю, что это будет настоящий стон. может быть, описание этого заставит меня задуматься.

Я делаю интеграцию Facebook Connect с CI2.0, основываясь на работе этого парня:

http://hitsend.ca/2010/10/facebook-connect-user-authentication-using-the-new-graph-api-in-codeigniter/

, который я обновил до 2.0

некоторые соответствующие биты кода:

конфиг / facebook.php:


 $config['facebook_api_key'] = 'xxx';  (it is the ID, not the key, as he misnamed his array key)
 $config['facebook_secret_key'] = 'xxx'; 

Контроллеры / fb_login.php


    function index() {
        $this->load->library('fb_connect');

библиотеки / fb_connect.php


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

    class fb_connect {
          ....

        function fb_connect()
        {
            //Using the CodeIgniter object, rather than creating a copy of it
            $this->_obj =& get_instance();

            //loading the config paramters for facebook (where we stored our Facebook API and SECRET keys
            $this->_obj->load->config('facebook');
            //make sure the session library is initiated. may have already done this in another method.
            $this->_obj->load->library('session'); 

            $this->_api_key        = $this->_obj->config->item('facebook_api_key');
            $this->_secret_key    = $this->_obj->config->item('facebook_secret_key');

            $this->appkey = $this->_api_key;

            //connect to facebook
            $this->fb = new Facebook(array(
                          'appId'  => $this->_api_key,
                          'secret' => $this->_secret_key,
                          'cookie' => true
                        ));

и, наконец, php-библиотека facebook: библиотеки / facebook / facebook.php


  public function __construct($fb_config) {
print_r($fb_config);
    $this->setAppId($fb_config['appId']);
    $this->setApiSecret($fb_config['secret']);
    if (isset($fb_config['cookie'])) {
      $this->setCookieSupport($fb_config['cookie']);
    }

Лучший способ описать проблему - это просто дать вывод print_r ($ fb_config):

Array ( [facebook_api_key] => xxx [facebook_secret_key] => xxx) 

и Сообщение: неопределенный индекс: appId Сообщение: неопределенный индекс: секрет

Facebook __construct () загружается с массивом $ config [] файла конфигурации; Понятия не имею, почему он это делает.

Заранее спасибо за любые выводы или заметки о «глупых вещах, которые я сделал»

Ответы [ 2 ]

0 голосов
/ 06 мая 2011

да, массив, возвращающий неправильные ключи, был тем, что я пытался отработать.Оказывается, более ранняя попытка настроить Facebook Connect была все еще на сервере разработчиков, и она автоматически загружала библиотеку под названием «Facebook», которая отличалась от текущей, которую мы используем.эта автозагрузка вызывала новую библиотеку слишком рано.Непонятно, почему он использовал массив конфигурационного файла, но думаю, что мне придется копаться в основных классах, чтобы разобраться с этим, и не очень заинтересован

0 голосов
/ 04 мая 2011

Массив возвращает два ключа: facebook_api_key и facebook_secret_key, в то время как конструктор пытается прочитать ключи appId и secret

Кроме того, используемая вами библиотека может быть устаревшей. Источник тока (libraries/facebook/facebook.php), строки 186-88 читать:

public function __construct($config) {
    $this->setAppId($config['appId']);
    $this->setApiSecret($config['secret']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...