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

21 facebook

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

zom*_*bat 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>
Run Code Online (Sandbox Code Playgroud)

在页面的页脚中,我有标准的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>
Run Code Online (Sandbox Code Playgroud)

这应该就是您所需要的(当然,请填写您自己的选项).您必须设置Facebook Connect才能使用跨域接收器文件.我建议遵循渲染XFBML步骤.

  • 虽然Zombat提出的答案有效,但您应该使用新的[JS SDK](http://developers.facebook.com/docs/reference/javascript/)而不是他的代码示例使用的旧JS SDK.XFBML将保持不变,但JS代码看起来会有所不同.这是一个实例:http://apps.facebook.com/fbrelll/xfbml/fb:server-fbml-multi-friend-selector. (2认同)

Chr*_*son 8

这个帖子中的问题仍然有用,但答案已经过时了.您应该使用新的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>
Run Code Online (Sandbox Code Playgroud)

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