Facebook多朋友选择器无法渲染(iFrame应用程序)

时间:2010-08-28 21:19:12

标签: facebook xfbml

我有一个iframe Facebook应用程序(使用Facebook的新JavaScript API),需要允许用户在参加比赛后邀请他们的朋友加入应用程序。我在页面上的div中有以下标记(应用程序名称和Canvas Url编辑):

<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>

根据我的理解,如果你需要在XFBML / iframe应用程序中使用FBML标签,你只需将它们放入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 个答案:

答案 0 :(得分:2)

好的,我得到了它的工作。以下是我的看法:

<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)您不需要APP KEY,只需要JS代码中的APP ID。

2)XFBML需要包装在SCRIPT标签内。

答案 1 :(得分:1)

此示例也有效:

<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>

在http://connect.facebook.net/en_US/all.js#appId= [APP_ID]&amp; xfbml = 1

中设置APP_ID