Плагин CakePHP Facebook (webtechnick) работает только в режиме «поделиться» - PullRequest
0 голосов
/ 03 июля 2011

Я пытаюсь использовать плагин Facebook от webtechnick с моим приложением CakePHP 1.3.10.Я следовал всем инструкциям по его установке и имел все доступные функции:

  • Загруженный пакет и установлен в app / plugins / facebook
  • Created app / config / facebook.php с идентификатором, ключом и секретными номерами моего приложения на основе примера файла конфигурации
  • Включено $ helpers = array ('Facebook.Facebook') в моем app_controller.php
  • Повторяет функцию $ this-> Facebook-> html () в моем макете (заменяя HTML-тег по умолчанию)
  • Повторяет функцию $ this-> Facebook-> init () в нижней части макета до

Затем я используюэтот код на мой взгляд:

echo $this->Facebook->share('link'); 
echo $this->Facebook->like();   
echo $this->Facebook->comments();

Но я получаю только кнопку «Поделиться», а не «Нравится» или комментарии.Я что-то пропустил?Если я, например, echo что-то внутри вспомогательной функции Facebook like () , она печатает в представлении, то есть фактически вызывает функцию, но не генерирует элемент facbook.Есть идеи?Я не знаю, что еще попробовать, я думаю, что я выполнил все шаги ...

---------- ОБНОВЛЕНИЕ --------------------------

В Firebug я вижу эту ошибку сценария: FB.provide не является функцией

Файл, из которого происходит ошибка: http://connect.facebook.net/es_ES/all.js,, который, как я полагаю, вызывается плагином.Но так как это на серверах Facebook, что я могу с этим поделать?Означает ли это, что есть проблема с их стороны?Я не вижу больше вещей, которые я могу сделать в моем конце.Есть идеи?

Ответы [ 4 ]

1 голос
/ 12 марта 2012

Поместите каталог facebook в каталог app / plugins и поместите facebook.php из папки config каталога facebook в папку app / config, и я уверен, что ваша проблема будет решена немедленно.

Спасибо

1 голос
/ 23 декабря 2011

Это может быть связано с тем, что Facebook осуждает FBML.

Поэтому используйте обычный тег html вместо $this->Facebook->html(); перед тегом HEAD.

Это работает для меня.Кстати, это становится болью, чтобы развиваться для Facebook LOL.Приветствую, чтобы быть разработчиком, я думаю, что мы умрем молодыми.>. <</p>

"1 января 2012: FBML больше не будет поддерживаться на платформе. 1 июня 2012: приложения FBML больше не будут работать." Подробнее об этом здесь:http://developers.facebook.com/docs/reference/fbml/

1 голос
/ 07 октября 2011

Похоже, что файл all.js вызывает проблемы как в IE, так и в Firefox. Я использую IE8 и Firefox 7.

Посмотрев на следующее ... Ответ переполнения стека и Отчет об ошибке в Facebook Мне удалось решить оба вопроса. Для меня исправлением было редактирование помощника facebook.php и добавление следующего ...

IE Fix

FB.UIServer.setActiveNode = function(a,b){FB.UIServer._active[a.id]=b;}

Исправление Firefox

window.FB = null;
FB = null;

Полная функция init ()

function init($options = array()){
    if(FacebookInfo::getConfig('appId')){
        $appId = FacebookInfo::getConfig('appId');
        $session = json_encode($this->Session->read('FB.Session'));
        $init = '<div id="fb-root"></div>';
        $init .=  $this->Html->scriptBlock(
            "
            window.fbAsyncInit = function() {
                FB.init({
                    appId   : '{$appId}',
                    session : {$session}, // don't refetch the session when PHP already has it
                    status  : true, // check login status
                    cookie  : true, // enable cookies to allow the server to access the session
                    xfbml   : true // parse XFBML
                });

                /* IE FIX */
                FB.UIServer.setActiveNode = function(a,b){FB.UIServer._active[a.id]=b;}
                /**********/

                // whenever the user logs in, we refresh the page
                FB.Event.subscribe('auth.login', function() {
                    window.location.reload();
                });
            };
            (function() {

                /* FIREFOX FIX */
                window.FB = null;
                FB = null;
                /**********/

                var e = document.createElement('script');
                e.src = document.location.protocol + '//connect.facebook.net/{$this->locale}/all.js';
                e.async = true;
                document.getElementById('fb-root').appendChild(e);
            }());
            ",
            $options
        );
        return $init;
    }
    else {
        return "<span class='error'>No Facebook configuration detected. Please add the facebook configuration file to your config folder.</span>";
    } 
}

Немного поздно, но я надеюсь, что это кому-нибудь поможет!

0 голосов
/ 06 февраля 2012
  • Перейдите: https://developers.facebook.com/apps, затем создайте новое приложение.
  • В разделе «Выберите способ интеграции вашего приложения с Facebook»: отметьте веб-сайт и введите URL своего сайта.
  • Скопируйте /plugin/Facebook/config/facebook.php.example в app / config / facebook.php, откройте facebook.php и измените свой идентификатор приложения и свой секрет. Вот и все.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...