2

我正在制作一个简单的基于 iframe 的 facebook 应用程序。我有以下代码来调整 iframe 的大小:

FB_RequireFeatures(["Connect"], function(){
  FB.XdComm.Server.init('/xd_receiver.htm');
  FB.CanvasClient.startTimerToSizeToContent();
  FB.CanvasClient.syncUrl();
});

我想添加一个链接,该链接将显示一个弹出窗口,允许用户将应用定义的图像/链接发布到用户的墙上。为了让事情开始工作,我尝试在点击事件上使用以下代码:

FB.Connect.streamPublish('');

然而,什么也没有发生。我试过添加:

FB.init(<?=API_KEY?>, '/xd_receiver.htm');

都在FB_RequireFeatures函数内部,在它之前,在它之后......没有运气。什么都没发生。没有错误被抛出。没有什么。有任何想法吗?

4

4 回答 4

1

查看此页面以获取有关使用 Connect 使用 iFrame 应用程序设置流发布的完整说明:

http://thetechnicalexperience.blogspot.com/2010/02/how-to-use-fbconnectstreampublish.html

于 2010-02-12T15:55:08.007 回答
0

您必须设置连接 url 才能使用 javascript 库。尝试将您的书签 URL 设置为http://apps.facebook.com/yourapp,看看是否有帮助。

于 2010-02-09T22:57:20.673 回答
0

@Cyphus

是的,当我说“进入应用程序”时,我的意思是进入 facebook 上的应用程序页面 (apps.facebook.com/myapp)。目前,我的回调 URL 仅设置为画布。一旦我尝试将回调 URL 用于画布和连接 URL,每当我尝试访问应用程序时,我都会被重定向到实际的回调 URL 本身,而不是在 facebook 中加载 iframe。我不直接从我的服务器请求它,因为这在某种程度上违背了拥有 facebook 应用程序的目的。

于 2010-02-10T15:20:46.047 回答
0

检查您是否拥有:(一些来自http://wiki.developers.facebook.com/index.php/Connect/Setting_Up_Your_Site#Referencing_Facebook_Connect_on_Your_Site

  • 创建了 xd_receiver.htm,并且它位于您域的根目录中
  • 在文档的正文顶部包含FeatureLoader.js.php
  • 将问题中的 javascript(例如 FB_RequiresFeatures 等)添加到文档底部

当前在我的应用程序中运行正常的代码示例:

<script type="text/javascript">
   window.onload = function() {
        FB_RequireFeatures(["XFBML", "Connect"], function() {
           FB.Facebook.init("...my api key...","xd_receiver.htm");
           FB.CanvasClient.syncUrl();
        });
   };
</script>

您可以从 FB_RequireFeatures 调用中省略“XFBML”,并将路径也更改为 xd_receiver.htm,它应该可以正常工作。

此外,请仔细检查应用程序的连接 URL(通过 Facebook 中的开发人员应用程序设置)指向 xd_receiver.htm 文件的父级。因此,如果您的应用程序托管在http://www.mydomain.com上,那么查看您的代码示例,您的 xd_receiver.htm 将位于http://www.mydomain.com/xd_receiver.htm,您将希望将http://www.mydomain.com作为连接 URL。

如果这仍然不起作用,请尝试安装Firebug(或类似工具)以查看网络流量。当我让它工作时,Facebook Javascript API 会默默地失败,只有通过检查来回的请求,我才发现 Facebook 不喜欢我的 Connect URL。

为了测试它是否正常工作,我很想使用

FB.Connect.streamPublish();

而不是您发布的行,因为它应该弹出一个对话框,并且清楚地作为一个工作示例给出。我不确定如果你只是传递一个空字符串作为参数会发生什么。

最后,还有很多基于 IFrame 的 Facebook 应用程序 - 如果您发现其中一个正在做您喜欢的事情,您可以随时查看他们的 Javascript 以了解他们是如何实现的。或者换句话说,Facebook 充满了示例 IFrame 应用程序代码。

于 2010-01-12T01:18:53.813 回答