ФБ.init уже был вызван
Я создаю приложение facebook iframe. Мое приложение загружается один раз (я получаю signed_request один раз), а затем я перемещаюсь по страницам в iframe, используя внутренние доменные ссылки. Я заметил, что вижу эти странные сообщения как в Chrome, так и в Firefox
FB.init has already been called - this could indicate a problem
Я уверен, что этот метод вызывается только один раз, и кажется, Facebook хочет, чтобы я назвал его один раз за загрузку приложения (не один раз на странице).
window.fbAsyncInit = function() {
FB.init({
appId: param('facebook_app_id'),
frictionlessRequests: true,
oauth: true,
channelUrl: site_url('/channel.html')
})
}
какую ошибку (если таковая имеется) я делаю здесь?
3 ответов:
С момента передачи параметров к
js.srcкак#xfbml=1&appId=X, FB SDK будет автоматически инициализировать себя и таким образомFB.initпостараюсь переинициализации.. Поэтому в вашем коде вам не нужно удалятьFB.initфункция, просто убедитесь, что вы не передаете параметры в коде, который загружает асинхронно JS SDK.заменить:
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&appId=X";С :
js.src = "//connect.facebook.net/en_US/sdk.js";надеюсь, что это помогает.
Если вам действительно нужно вызвать init более одного раза, вы можете сделать это:
FB._initialized = false; FB.init();но это не имеет никакого смысла для меня, у меня немного другая проблема, но это также относится к
FB.init has already been called - this could indicate a problemсообщение.у меня есть сайт на основе AJAX, где после каждой загрузки страницы мне нужно визуализировать XFBML из HTML, который я получаю от запроса AJAX (комментарии, например, кнопка и другие):
<div class="fb-comments" data-href="{REMOVED}" data-num-posts="5" data-width="760" colorscheme="dark"></div>чтобы сделать это, вы можете запустить это, когда вам нужно отобразить XFBML:
FB.XFBML.parse();
у меня тоже была эта проблема. Я просто удалил
FB.init({...})часть и он начал работать со следующим кодом:window.fbAsyncInit = function () { FB.Event.subscribe('auth.logout', function () { // subscribe parts }); // here is where fb.init() code was }; (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=X"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));Я думаю, что теперь он автоматически вводит код, поэтому нет необходимости делать это вручную. Теперь мой код снова работает. Надеюсь, это поможет.
Comments