我可以在iframe中使用Facebook的fb:friend-selector吗?

时间:2009-05-04 14:47:21

标签: facebook

我正在尝试使用Facebook的fb:friend-selector FBML标记,但我的应用程序在iframe中运行。是否可以在iframe中使用此标记?如果有的话,有人有任何例子吗?

4 个答案:

答案 0 :(得分:16)

是的,这绝对可以,但您必须使用Facebook ConnectXFBML。具体来说,您希望使用fb:serverfbml标记来使fb:friend-selector工作。我有一个iframe应用程序,我在标准“邀请朋友加入你的应用程序”上下文中使用了所有这些和fb:friend-selector,它运行得很好。

这是我的模板文件的正文,它在iframe的正文中输出:

<fb:serverfbml style="width: 650px;"> 
<script type="text/fbml">
    <fb:fbml> 
        <fb:request-form
            action="http://example.com/invite/sent"
            method="POST"
            invite="true"
            type="My App"
            content="Try out my app!
                <fb:req-choice url='http://your-facebook-canvas-url'
                label='<?php echo htmlspecialchars("Accept button text",ENT_QUOTES); ?>'
                /> 
            " > 
            <fb:multi-friend-selector
                showborder="false"
                actiontext="Invite your friends to try My App."
                exclude_ids="<?php echo $excludeIds; ?>"
                rows="3"
            /> 
        </fb:request-form> 
    </fb:fbml>
</script> 
</fb:serverfbml>

在页面的页脚中,我有标准的Facebook Connect代码,它将加载并呈现fb:serverfbml内容:

<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script>
<script type="text/javascript">
    FB_RequireFeatures(
        ["CanvasUtil"],
        function(){
             FB.XdComm.Server.init('/xd_receiver.html');
             FB.CanvasClient.startTimerToSizeToContent();
        }
    );
</script>

<script type="text/javascript">
    FB_RequireFeatures(["XFBML"], function(){ FB.Facebook.init("Your Facebook API Key", "/xd_receiver.html"); });   
</script>

这应该是您所需要的(当然,请填写您自己的选项)。您必须设置Facebook Connect才能使用跨域接收器文件。我建议关注rendering XFBML steps

答案 1 :(得分:9)

这个帖子中的问题仍然有用,但答案已经过时了。您应该使用新的JavaScript SDK。这应该替换zombat发布的第二个代码段

<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script type="text/javascript">
   FB.init({appId: 'your app id',
       status: true,
       cookie: true,
       xfbml: true});
   FB.Event.subscribe('auth.sessionChange', function(response) {
     if (response.session) {
       // A user has logged in, and a new cookie has been saved
     } else {
       // The user has logged out
     }
   });
</script>

此处有更多信息:http://www.clickonchris.com/2010/11/facebook-javascript-sdks/

答案 2 :(得分:3)

因为这是关于iframe中的朋友选择器的很多问题。

现在正确的sintax是<fb:serverfbml width="650px">

答案 3 :(得分:0)

错过的一个主要和重点是你们中的许多人(包括我)几乎在任何地方都在脚本中......但是“FB”load.js文件需要加载立即身体标签之后。

至少这是我发现让一切工作和相应的嗡嗡声。我在其他一些网站的帖子上找到了它(不知道我是否应该在这里张贴或不...)但它是在花了无数个小时之后,做了上面提到的 - 以及跟随每个其他1,2, 3步确保iframe适当大小......

现在我已经开始工作了:)