2010-07-09 4 views
0

Я недавно обновлен, чтобы открыть график и реализованы некоторые из facebook социальных плагинов на моем сайте, как фб: friendpile FB: как ящик и т.д.Facebook Open Graph - кнопка Войти не отображается каждый раз

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

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

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

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

 
<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> 

Любые идеи в беде съемки это будет оценено Спасибо

+0

Где находится '' FB.init() '? Можете ли вы опубликовать полный сценарий инициализации? – serg

+0

Спасибо - я обновил вопрос, чтобы показать полный скрипт инициализации. – Gublooo

+0

И у вас есть '

' над этим, не так ли? Код инициализации Fb, который вы указали, должен быть указан ниже открытого тега ''. Также вы включаете пространство имен 'xmlns: fb' в тег' '? – serg

ответ

1

Ваш выход из системы логика кажется проблематичным (вы называете 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> 

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

EDIT: Вы также можете заказать номер http://fbrell.com/xfbml/fb:login-button.

+0

Спасибо daaku - на основе комментарии от serg и you, я исправил логику выхода, и я дважды проверял xmlnb: fb в теге html. Я попробую загрузить синхронизацию, но я сделал еще одно изменение, и эта проблема перестала происходить. 100% уверен, что из-за этого. Я использовал facebook-объявления и как часть бета-тестирования facebook с кодом отслеживания, который они попросили вставить в нижней части страницы. Я удалил его 2 дня назад, и проблема, похоже, исчезла. Я собираюсь подождать еще пару дней, чтобы посмотреть, могу ли я воспроизвести эту ошибку. Thanks – Gublooo

+0

Прохладный - не стесняйтесь сообщать о проблеме в Github или сообщать о проблеме через обратную связь с рекламой, если вы ее снова заметите. Случай с воспроизведением всегда полезен :) – daaku