2010-01-11 89 views
2

我正在制作一个简单的基于iframe的facebook应用程序。我有以下的代码大小我的iframe:如何在iframe facebook应用程序中使用FB.Connect.streamPublish?

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内功能,在它之前,之后......没有运气。什么都没发生。没有错误被抛出。没有。有任何想法吗?

+0

只是一个提示,如果你想做一个简单的应用程序,第一次是很多更容易使FBML应用程序,而不是iFrame – 2010-02-09 23:09:57

回答

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的根在的顶部BODY文档
  • 中添加了问题的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> 

可以省略“XFBML”从FB_RequireFeatures打电话,将路径更改为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不喜欢我的连接URL。

为了测试它的所有工作,我会尝试使用

FB.Connect.streamPublish(); 

而是你张贴的路线,因为它应该弹出一个对话框,并作为工作显然给例。我不确定如果你只是传递一个空字符串作为参数会发生什么。

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

+0

我需要包括'xd_receiver.htm'。 我没有设置连接URL,因为如果我设置它,每次去应用程序时,它都会将实际的URL加载到新窗口中,而不是在Facebook中的Canvas中。我已经试过做console.log(FB.Connect.streamPublish());并打印出“真实”。 我已经试过('')和(),并且我已经看到开发wiki上的两个例子...不行。 我看过萤火虫中的回应,并且它对我的连结网址不满意(因为没有设定)。但是,如果我设置了一个,那么去应用程序会把我带到异地。 – Gary 2010-01-12 16:10:00

+0

如果不设置连接URL,则无法使用FB javascript客户端。当新窗口弹出时,streamPublish是否工作?如果是这样,所有你需要做的就是修复'新窗口'的问题,一切都将按需要工作。 回想一下你在问题中包含了什么,我认为我们没有足够的努力来弄清楚为什么你会得到一个新窗口。你使用的是什么浏览器?你能否提供更多的HTML返回或者你有我们可以访问的URL来查看应用程序的运行? – Cyphus 2010-01-14 16:05:02

+0

我的意思是,如果我设置了Connect URL,那么去应用会导致Facebook加载连接URL(与我的应用的URL相同),而不是将数据加载到Facebook Canvas中的iframe中。 – Gary 2010-01-14 20:52:22

0

@Cyphus

是的,当我说“要应用”我的意思是要在应用程序的页面在Facebook上(apps.facebook.com/myapp)。目前,我的回调网址只设置在画布上。只要我试图使用我的回调URL和画布和连接URL,任何时候我尝试去应用程序,而不是加载在Facebook内的iframe,我被重定向到实际的回调URL本身。我不直接从我的服务器请求它,因为这有点失败了有Facebook应用程序的目的。

相关问题