【问题标题】:Can FBML be used within an iFrame Facebook app?FBML 可以在 iFrame Facebook 应用程序中使用吗?
【发布时间】:2011-08-09 14:42:03
【问题描述】:

我正在编写一个小型 Facebook 应用程序,只是为了娱乐和学习。不幸的是,Facebook 开发人员文档、wiki 和示例还有很多不足之处。

如果我的应用程序是 iFrame 应用程序 (PHP),我可以在页面中使用 FBML 还是需要使用 XFBML?如果我需要使用 XFBML,是否有可以查看的 sn-ps 存储库?

我希望添加一个朋友选择框。例如,欢迎使用该应用,选择一个对象,将其发送给 20 个朋友。

您会认为朋友选择器会成为 Facebook 应用的常用组件,但显然不是。

我可以使用 FBQL 和 CSS 来定义我自己的,但标准和一致性不是很好吗?

是否有一个明确的、从头开始、易于遵循的 Facebook 应用程序开发人员教程,涵盖 FBML 标签、XFBML 标签以及示例中的哪些内容?

【问题讨论】:

    标签: facebook


    【解决方案1】:

    我认为,在我对 Facebook 问题所做的每一个回答中,我都会提到“Facebook 文档很烂,所以如果你找不到东西也不要难过。”

    答案是肯定的,您绝对可以在 IFrame 应用程序中使用 FBML。我经常这样做。 Facebook 正在使用 XFBML 模糊 IFrame 应用程序和 FBML 应用程序之间的界限,这很棒。基本上,XFBML 只是普通的 FBML,除了它是通过 Facebook Connect javascript 库解析和呈现的。因此,您会在 FBML 控件呈现之前看到一点延迟,但通常这不是什么大问题。

    我将举一个直接从我的一个 IFrame 应用程序加载朋友选择器的示例。您会看到它被fb:serverfbml 标签包围,您需要渲染几个更复杂的FBML 标签。在XFBML wiki page 上列出了不需要 的FBML 项目,它们周围需要一个fb:serverfbml 标签。

    无论如何,一些代码:

    <fb:serverfbml style="width: 650px;"> 
    <script type="text/fbml">
        <fb:fbml> 
            <fb:request-form
                action="http://my.app.com/invite/sent"
                method="POST"
                invite="true"
                type="My App Name"
                content="You should use My App Name.  All the cool kids are doing it.
                    <fb:req-choice url='http://apps.facebook.com/my-app'
                    label='<?php 
                         echo htmlspecialchars("That sounds sweet!",ENT_QUOTES);
                         ?>'
                    /> 
                " > 
                <fb:multi-friend-selector
                    showborder="false"
                    actiontext="Invite your friends to use My App Name."
                    exclude_ids="1234556,465555"
                    rows="3"
                /> 
            </fb:request-form> 
        </fb:fbml>
    </script> 
    </fb:serverfbml>
    

    所有嵌套标签的转义引号都变得有点棘手,所以你必须注意这一点。您可以看到我的示例来自一个 PHP 应用程序,我在其中留下了一个 htmlspecialchars() 转义调用,仅用于说明目的(即使该特定字符串不需要转义)。

    无论如何,如果您已经为您的 IFrame 应用程序安装了 Facebook Connect,那么这应该可以进行一些调整。如果您还没有启用 Facebook Connect,请按照 XFBML wiki page 上的渲染 XFBML 说明进行操作。

    【讨论】:

    • Zombat,感谢您提供的信息。然而,这又带来了另一个问题。我目前正在使用 PHP 客户端库并拥有传统代码 $facebook = new Facebook($appapikey, $appsecret);$user_id = $facebook->require_login();从那里我运行 FBQL 来拉回用户信息。这些与 FB.Init() 调用有冲突吗?
    • 没有。 Facebook PHP 客户端与 Javascript 库完全不同,因为它完全是服务器端的。 PHP 库和 Javascript 库允许您在不同的环境(即服务器端和客户端)中执行相同的操作。
    猜你喜欢
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多