У меня проблемы с подключением моего сайта к 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>
Теперь вот первая проблема, с которой я столкнулся , но теперь решил .Проблема заключалась в том, что в документах по JavaScript SDK говорится, что для метода 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 library» показывает библиотеку Эллиота Хогена .Я загружаю файлы, помещаю их в нужные места, затем приступаю к загрузке библиотеки.
Теперь возникает текущая проблема.Я добавляю следующий код (взятый из примера, приведенного с библиотекой) в конструктор моего контроллера, чтобы это происходило на каждой странице:
$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 и user_id никогда не устанавливаются.Хотя я не получаю никаких ошибок.
Насколько я знаю, предполагается, что значения должны быть установлены так, чтобы я знал, зарегистрирован ли человек, просматривающий мой сайт, в свою учетную запись Facebook.Если они есть, я могу видеть, разрешили ли они мое заявление.Если они разрешили, я могу позволить им отключиться от моего сайта, если нет, я могу позволить им подключиться.Но я ничего не могу сделать, если эти переменные не заполнены.
Я попытался покопаться в источнике библиотеки, но я действительно не могу разобраться с этим.И я надеюсь, что реальное решение для этого не будет включать взлом библиотеки отдельно.Я ожидаю, что библиотека, работающая с CodeIgniter, будет работать.
Есть идеи?
Большое спасибо.:)