У меня возникают проблемы с подключением моего веб-сайта к Facebook. Я бы хотел, чтобы это позволяло пользователям увеличивать свои учетные записи, подключая их к Facebook (мне не нужны люди, чтобы иметь возможность входа в Facebook, вместо этого я использую OpenID). Мой сайт работает в рамках CodeIgniter.
Что я сделаю, так это удалить все, что я пробовал, и пройти вас по моим шагам, пока он не перестанет работать.
Шаг 1: настройте JavaScript SDK и XFBML
Сначала я добавляю ссылку на спецификацию FBML на тег <html>
:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xml:lang="en" lang="en">
Затем, после моего тега <body>
, я добавляю:
<script src="http://static.new.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script>
Теперь вот первая проблема с но теперь решена. Проблема заключалась в том, что документы для SDK JavaScript говорят, что метод FB.init()
требует параметра appId в качестве параметра, но это оказалось неверен. Мне нужно было передать свой apiKey. Итак, это код, с которым я столкнулся, который предшествует моему тегу </body>
:
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({
apiKey : '<?php echo $this->config->item('facebook_api_key'); ?>',
status : true,
cookie : true,
xfbml : true
});
</script>
Теперь я могу добавить объекты XFBML на свои страницы, например <fb:login-button></fb:login-button>
, который работает так, как ожидалось. Я нажимаю на него, и появляется всплывающее окно с вопросом, хочу ли я разрешить моему сайту доступ к моему профилю в Facebook. Я говорю "да", а затем, проверяя настройки приложения в Facebook, я вижу, что мой сайт добавлен.
Итак, этот шаг работает отлично.
Шаг 2. Настройка библиотеки PHP
Хорошо, теперь мне нужно добавить библиотеку PHP. Итак, быстрый поиск google для библиотеки "codeigniter facebook" показывает библиотеку Эллиота Хоотина. Я загружаю файлы, помещаю их все в нужные места, а затем загружаю библиотеку.
Теперь возникает текущая проблема. Я добавляю следующий код (взятый из примера, приведенного в библиотеке) к моему конструктору контроллера, чтобы он происходил на каждой странице:
$this->load->library('facebook_connect');
$this->data['fb_user'] = $this->facebook_connect->user;
$this->data['fb_userid'] = $this->facebook_connect->user_id;
Но если я делаю print_r($this->data['fb_user']);
, я ничего не получаю. Когда-либо. Я вошел в систему на Facebook, вышел из системы, зарегистрировался и добавил свой сайт в свой профиль и т.д. И т.д. И т.д. Пользователь и user_id никогда не устанавливаются. Однако я не получаю никаких ошибок.
Насколько мне известно, значения должны быть установлены так, чтобы я знал, будет ли человек, просматривающий мой сайт, войти в свою учетную запись на facebook. Если да, то я вижу, разрешили ли они мое приложение. Если они разрешили это, я могу позволить им отключиться от моего сайта, если нет, я могу позволить им подключиться. Но я не могу ничего сделать, если эти переменные не заполнены.
Я пробовал заглядывать в источник библиотеки, но я действительно не могу обойти его. И я надеюсь, что фактическое решение для этого не связано с разрывом библиотеки. Я ожидаю, что специальная библиотека CodeIgniter будет работать.
Любые идеи?
Большое спасибо.:)