0

我有一个 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
});
4

2 回答 2

2

Ok, I got it to work. Here is how it looks for me :

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

and the JS injection code looks like this :

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

So,

1) You dont need your APP KEY, only your APP ID in the JS code.

2) The XFBML needs to be wrapped inside a SCRIPT tag.

于 2010-09-13T18:37:16.570 回答
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]&xfbml=1 中设置 APP_ID

于 2011-05-13T14:35:08.323 回答