Facebook открыть график - кнопка входа не отображается каждый раз - PullRequest
0 голосов
/ 09 июля 2010

Я недавно перешел на открытый график и внедрил на свой веб-сайт некоторые социальные плагины Facebook, такие как fb: friendpile, fb: like-box и т. Д.

С тех пор, как я реализовал эти новые функции, я вижу случайное поведение с этими плагинами.

Как и на моей домашней странице, когда вы вводите URL-адрес и заходите в первый раз, ни один из социальных плагинов Facebook не отображается - нет кнопки входа, нет дружественной кучи - нет ничего.

Но когда вы нажмете CTRL F5 - они появятся. Сначала я подумал, что, возможно, это как-то связано с моей машиной, но вчера два моих пользователя сообщили об одной и той же проблеме.

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

<script type="text/javascript">
    window.fbAsyncInit = function() {
       FB.init({appId: '<?php echo Zend_Registry::getInstance()->configuration->facebook->appid;?>', status: true, cookie: true, xfbml: true});

                /* All the events registered */
                FB.Event.subscribe('auth.login', function(response) {
                    // do something with response
                    login();
                });
                FB.Event.subscribe('auth.logout', function(response) {
                    // do something with response
                    logout();
                });
            };
            (function() {
                var e = document.createElement('script');
                e.type = 'text/javascript';
                e.src = document.location.protocol +
                    '//connect.facebook.net/en_US/all.js';
                e.async = true;
                document.getElementById('fb-root').appendChild(e);
            }());

            function login(){        
                document.location.href = "<?php echo $this->baseUrl(); ?>/login/log";
            }
            function logout(){
                FB.init({appId: '<?php echo Zend_Registry::getInstance()->configuration->facebook->appid;?>'});               
                FB.logout(function(response) {
                      // user is now logged out
                    }); 
                document.location.href = "<?php echo $this->baseUrl(); ?>/login/logout";
                return false;
            }
</script>

Любые идеи в устранении неполадок, это будет оценено Спасибо

1 Ответ

1 голос
/ 12 июля 2010

Ваша логика выхода из системы кажется проблематичной (вы вызываете FB.logout() в logout() - но также вызываете logout() для события 'auth.logout', которое кажется циклическим).Вам также следует удалить вызов FB.init() внутри вашей функции logout().Отсутствие xmlns:fb в теге <html> часто является причиной того, что XFBML не рендерится в IE, поэтому я проверю это дважды.Вы также можете попробовать заменить асинхронную загрузку синхронизированной загрузкой с помощью обычного тега сценария, например:

<script src="http://connect.facebook.net/en_US/all.js"></script>

Но случай с живым воспроизведением был бы более полезным, поскольку ваш код по большей части выглядит нормально.1012 * РЕДАКТИРОВАТЬ: Вы также можете оформить http://fbrell.com/xfbml/fb:login-button для примеров.

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