0

У меня есть следующий код:Страница перезагружается после загрузки подключенного счета FB, используя Facebook Войти Plugin

<html xmlns:fb="http://www.facebook.com/2008/fbml"> 
<head> 
    <title></title> 
</head> 
<body> 
<div id="fb-root"></div> 
<script> 
    window.fbAsyncInit = function() { 
     FB.init({ 
      appId  : 'APP_ID', // App ID 
      status  : true, // check login status 
      cookie  : true, // enable cookies to allow the server to access the session 
      xfbml  : true // parse XFBML 
     }); 

     // Additional initialization code here 
    }; 

    // Load the SDK Asynchronously 
    (function(d){ 
     var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
     if (d.getElementById(id)) {return;} 
     js = d.createElement('script'); js.id = id; js.async = true; 
     js.src = "//connect.facebook.net/en_US/all.js"; 
     ref.parentNode.insertBefore(js, ref); 
    }(document)); 
</script> 
<fb:login-button show-faces="true" width="370" max-rows="5" scope="email">Log In with Facebook</fb:login-button> 
</body> 
</html> 
  1. Я войти в приложение с помощью Facebook.
  2. Страница обновляется, показывая мне, что я вошёл в систему.
  3. Если я обновляю или загружаю страницу снова, тогда Facebook загрузит плагин. Примерно через 10 секунд страница перезагрузится.

Я инициализировал ошибку или это просто, как Facebook что-то делает?

EDIT: иногда я получаю следующее сообщение об ошибке:

1 XFBML tags failed to render in 30000ms.

Найдено временное решение от https://stackoverflow.com/a/4182542/968219

Я не знаю, почему это работает, но я рад, что он фиксирует это. Кто-нибудь знает, что лучше исправить?

ответ

0

попробуйте добавить файл канала

FB.init({ 
      appId  : 'APP_ID', // App ID 
      status  : true, // check login status 
      channelUrl : '//WWW.MY_DOMAIN.COM/channel.html', // Channel File 
      cookie  : true, // enable cookies to allow the server to access the session 
      xfbml  : true // parse XFBML 
     }); 

файл канала будет включать только:

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

ссылка:

http://developers.facebook.com/docs/reference/javascript/

+0

Не решает проблему; страница перезагружается. – zgosalvez

0

Похоже, что рендеринг XFBML не работает правильно, попробуйте использовать версию HTML.

<div class="fb-login-button" show-faces="true" width="370" max-rows="5" scope="email">Login with Facebook</div> 

или вы можете просто создать свою собственную кнопку для входа и привязать его к этому:

FB.login(function(response) { 
    // handle the response 
}, {scope: 'email'}); 
+0

Могу ли я использовать и подписываться на 'xfbml.render', когда я использую HTML-версию? – zgosalvez

+0

да, вы можете, и это все равно уволит событие, но я не уверен, для чего вы его использовали. он должен использоваться как делегат onload? – GGG

+0

Некоторые элементы на странице могут отображаться только после отображения плагинов. – zgosalvez

 Смежные вопросы

  • Нет связанных вопросов^_^