#xfbml=1 вызывает проблемы

На моем сайте есть два разных механизма, использующих как xfbml, так и fbjs:

  • тег FB:Like для отдельных записей
  • объект FB для входа в facebook с помощью fb connect

Моя проблема заключается в том, что когда я включаю "all.js" на страницу, сценарий входа работает, но тег fb:like не работает.

Когда я включаю «all.js#xfbml=1», теги fb:like снова работают, но теперь мой объект FB не определен, и мой код входа не работает.

Есть что-то, что мне не хватает?

Заранее благодарим за любую помощь, которую вы можете оказать.


person matthewdunnam    schedule 14.01.2011    source источник


Ответы (2)


Вам нужно только один раз включить ссылку на скрипт и вызвать init для скрипта при загрузке страницы. Вы можете использовать это либо для кнопок fb:like, либо для сценария входа.

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
  FB.init({
    appId  : 'YOUR APP ID',
    status : true, // check login status
    cookie : true, // enable cookies to allow the server to access the session
    xfbml  : true  // parse XFBML
  });
</script>

Ключом к этому является установка xfbml в true (это то, что делает #xfbml=1). Если у вас нет этого набора, кнопки «Нравится» не будут отображаться.

Если вы хотите подписаться на событие входа в систему, просто добавьте следующий скрипт после вызова FB.init():

  FB.Event.subscribe('auth.login', function(response) {
    window.location.reload(); // or something else...
  });

И здесь будет ваш сценарий входа в систему, который будет запускаться ТОЛЬКО тогда, когда пользователь нажимает на ссылку, кнопку и т. Д.

function doLogin() {
   FB.login(function(response) {
     if (response.session) {
       if (response.perms) {
         // user is logged in and granted some permissions.
         // perms is a comma separated list of granted permissions
       } else {
         // user is logged in, but did not grant any permissions
       }
     } else {
       // user is not logged in
     }
   }, {perms:'read_stream,publish_stream,offline_access'});
}
person Nathan Totten    schedule 18.01.2011
comment
Я делаю включаю только одно или другое, но добавление одной версии ломает другую. - person matthewdunnam; 21.01.2011

Добавьте этот xmlns в свой HTML-тег

xmlns:fb="http://www.facebook.com/2008/fbml"

и включите "all.js"

person Damodaran    schedule 24.01.2011