如何在iframe facebook应用程序中使用FB.Connect.streamPublish?

如何在iframe facebook应用程序中使用FB.Connect.streamPublish?,facebook,iframe,publish,connect,Facebook,Iframe,Publish,Connect,我正在制作一个简单的基于iframe的facebook应用程序。我有以下代码来调整iframe的大小: FB_RequireFeatures(["Connect"], function(){ FB.XdComm.Server.init('/xd_receiver.htm'); FB.CanvasClient.startTimerToSizeToContent(); FB.CanvasClient.syncUrl(); }); 我想添加一个链接,该链接将显示一个弹出窗口,允许用户将应

我正在制作一个简单的基于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.init(,'/xd_receiver.htm');
FB\u RequireFeatures函数内、函数前、函数后。。。不走运。什么也没发生。不会抛出任何错误。没有什么。有什么想法吗?

检查你是否有:(一些来自)

  • 创建了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>
而不是你发布的那一行,因为它应该弹出一个对话框,并清楚地作为一个工作示例给出。如果只传递一个空字符串作为参数,我不确定会发生什么


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

为了使用javascript库,您必须设置连接url。尝试将书签URL设置为,看看是否有帮助。

@Cyphus


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

查看此页面,了解使用Connect设置iFrame应用程序流发布的完整说明:


我会根据需要加入'xd_receiver.htm'。我没有设置连接URL,因为如果我设置它,每次我去应用程序时,它都会将实际URL加载到新窗口中,而不是facebook的画布中。我安装了Firebug。。。我尝试过使用console.log(FB.Connect.streamPublish());然后打印出“真”。我尝试了(“”)和(),并且在dev wiki上看到了这两个示例。。。也不行。我查看了firebug中的响应,它对我的连接URL不满意(因为没有设置连接URL)。但是,如果我设置了一个,那么进入应用程序会让我离开现场。如果不设置连接URL,你就不能使用FB javascript客户端。当新窗口弹出时,streamPublish是否工作?如果是这样的话,你所需要做的就是修复“新窗口”问题,一切都将按要求工作。回顾一下你的问题,我认为我们还没有足够的资料来解释为什么你会得到一个新的窗口。你用的是什么浏览器?你能提供更多返回的HTML吗?或者你有我们可以访问的URL来查看应用程序运行吗?我的意思是,如果我设置了一个连接URL,转到应用程序会导致Facebook加载连接URL(与我的应用程序的URL相同),而不是在Facebook画布的iframe中加载数据。当你说转到应用程序时,我想你是说去?您应该有一个画布回调URL,它引用您自己的服务器,例如,它也可以是您的连接URL。事实上,我的应用程序对两者使用相同的URL,这可能非常常见。我很好奇你是如何导航到你的应用程序的——你是要导航到应用程序还是导航到应用程序本身?如果您直接从自己的服务器请求应用程序,我可以理解它不会将您重定向到Facebook框架的URL。只是一个提示,如果您第一次尝试制作一个简单的应用程序,那么制作FBML应用程序比iFrame要容易得多
FB.Connect.streamPublish();