Facebook Multi Friend Selector не отображает (приложение iFrame) - PullRequest
0 голосов
/ 29 августа 2010

У меня есть приложение Facebook iframe (использующее новый JavaScript API Facebook), которое должно позволять пользователю приглашать своих друзей в приложение после участия в конкурсе.У меня есть следующая разметка в div на странице (имя приложения и URL Canvas отредактированы):

<fb:serverFbml>
    <fb:request-form
        method="POST" 
        invite="true" 
        type="{Name of My Application}" 
        content='Your text goes here. %3Cfb%3Areq-choice%20url%3D%{a url-encoded link to my Canvas URL}"/>' 
        label="Authorize My Application"> 
        <fb:multi-friend-selector showborder="false" actiontext="Invite your friends to use My Application.">
        </fb:multi-friend-selector>
    </fb:request-form>
</fb:serverFbml>

Из того, что я понимаю, если вам нужно использовать теги FBML в приложении XFBML / iframe, вы простопоместите их в элемент fb: serverFbml, и Facebook позаботится об этом.Конечно же, мои первые впечатления кажутся ложными.Вместо того, чтобы опускать форму, я просто получаю пустую белую коробку с кажущимся нетронутым fbml.

Дизайн этого приложения предполагает (вероятно, неправильно), что мне не нужно аутентифицировать пользователя, чтобы позволить емупригласить своих друзей.Есть ли способ сделать это, или мне нужно, чтобы они сначала вошли в систему?Документация Facebook (конечно) неопределенна по этому вопросу.

РЕДАКТИРОВАТЬ: Мой FB.init () по запросу:

$("body").prepend("<div id=\"fb-root\"></div>");
FB.init({
    apiKey: "{My apiKey is here}",
    appId: "{My appId is here}",
    status: true,
    cookie: true,
    xfbml: true
});

Ответы [ 2 ]

2 голосов
/ 13 сентября 2010

Хорошо, я получил его на работу.Вот как это выглядит для меня:

<fb:serverfbml>
  <script type="text/fbml">
      <fb:fbml>
          <fb:request-form action='my_url' method='POST'
          invite='true'
          type='Poll'
          content='This is an invitation! <fb:req-choice url="my_url" label="Accept and join" />  '>
          <fb:multi-friend-selector showborder='false' actiontext='Select friends to send the poll' cols='5' rows='3' bypass='cancel' max="8">
          </fb:request-form>
      </fb:fbml>
  </script>
</fb:serverfbml>

и код впрыска JS выглядит следующим образом:

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId: 'YOUR APP ID HERE',
      status: true,
      cookie: true,
      xfbml: true
    });
  };
  (function() {
    var e = document.createElement('script'); e.async = true;
    e.src = document.location.protocol +
      '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
  }());
</script>

Итак,

1) Вам не нужно ваше приложениеКЛЮЧ, только ваш идентификатор приложения в коде JS.

2) XFBML должен быть заключен в тег SCRIPT.

1 голос
/ 13 мая 2011

Этот пример тоже работает:

<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=APP_ID&amp;xfbml=1"></script><fb:serverfbml>
  <script type="text/fbml">
     <fb:fbml>
         <fb:request-form action='my_url' method='POST'
         invite='true'
         type='Poll'
         content='This is an invitation! <fb:req-choice url="my_url" label="Accept and    join" />  '>
         <fb:multi-friend-selector showborder='false' actiontext='Select friends to     send the poll' cols='5' rows='3' bypass='cancel' max="8">
          </fb:request-form>
      </fb:fbml>
  </script>
</fb:serverfbml>

Установить APP_ID в http://connect.facebook.net/en_US/all.js#appId=[APP_ID]&xfbml=1

...