Когда загружать Facebook Javascript SDK с несколькими кнопками «Нравится» и приложением Timeline? - PullRequest
3 голосов
/ 14 марта 2012

Мне интересно, как мне загружать Javascript SDK, если у меня есть кнопка «Мне нравится» и кнопка, которая вызывает FB.login для приложения Timeline на той же странице.Код для кнопки «Нравится» использует следующее:

<div id="fb-root"></div>
<script>(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=126380467442965";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

, но для OAuth-диалога для приложения Facebook предлагает использовать:

<script src="http://connect.facebook.net/en_US/all.js"></script>
<div id="fb-root"></div>
<script>
  // assume we are already logged in
  FB.init({appId: '123050457758183', xfbml: true, cookie: true, oauth: true});
  ...
</script>

Какой из них следуетЯ пользуюсь?

1 Ответ

0 голосов
/ 06 апреля 2012

Различные коды являются асинхронными и синхронными реализациями SDK.Первый - асинхронный - код загружается, не затрагивая другие элементы на странице.Второй (только включающий тег script) является синхронным.Скрипт Facebook будет загружен, и он будет удерживать страницу во время загрузки.

Асинхронная реализация часто лучше - она ​​должна заставить страницу чувствовать себя быстрее.Однако, поскольку код Facebook загружается после страницы, мы не можем использовать какие-либо функции FB, пока не убедимся, что она загружена.Итак, асинхронная реализация предоставляет нам обратный вызов, который запускается при загрузке SDK.

Я думаю, что было бы лучше использовать код из первого фрагмента, но добавьте этот код для инициализации SDK, используяобратный вызов.

FB.login на вашей кнопке должен работать вместе с кнопкой «Нравится».

window.fbAsyncInit = function() {
    FB.init({
        appId: ...,
        status: true,
        cookie: true,
                xfbml: true,
        oauth: true
    });

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