我读了这个帖子 http://forum.developers.facebook.com/viewtopic.php?pid=198128
但它没有多大帮助。
我正在运行本地开发App Engine服务器(localhost:8080)
iframe app
所以我有几个问题 1)在safari 4.0.4上,发布故事对话框可以很好地显示所有images / data / action_links。在发布故事(或跳过)时,对话框变为空白,不会关闭。
2)我在firefox 3.5.8上测试了相同的代码,对话框出现了所有的images / data / action_links,但随后整个事情都冻结了。
单击对话框中的任何位置都没有任何帮助。如果我足够耐心并点击“发布”,我必须在对话框“故事发布”之前等待10秒钟。然后冻结了。 (点击跳过没有区别)。
顺便说一句,没有“按钮点击效果”:即:点击时按钮看起来不像“下沉”。我使用终端上的命令“top”检查了firefox内存,一切似乎都没问题,CPU进程没有峰值(我可以打开其他firefox选项卡并对它们进行处理)
我徒劳地试图解决问题......
1)所以我想,嗯这可能是因为本地开发(localhost)问题?我将代码上传到生产服务器,同样的事情发生了。
2)我尝试了一个较旧的firefox(3.1)并且同样的问题仍然存在(冻结)
3)我注意到我使用了2种不同的FB功能(Connect和XFBML)。我在PostStory函数中使用的连接功能。我在标签之前使用的XFBML功能。
所以我想,嗯......我尝试用FB_RequireFeatures [“XFBML”]替换FB_RequireFeatures [“Connect”]功能。没有改变。我仍然无法关闭故事对话框。
4)我是否有可能无法正确连接到xd_receiver.htm?
我的xd_receiver.htm存储在我的文件夹/ media / fbconnect
中在我的app.yaml
中handler:
- url: /fbconnect
static_dir: media/fbconnect
所以我认为必须与xd_receiver.htm建立连接。我能测试的任何方式吗?
这是所有代码:
<script type="text/javascript">
//post story function
function PostStory() {
//init facebook
FB_RequireFeatures(["Connect"], function() {
FB.Facebook.init('my_app_key', "/fbconnect/xd_receiver.htm");
FB.ensureInit(function() {
var message = 'the message';
var attachment = {
'name': 'a simple app to send gifts',
'href': 'http://apps.facebook.com/my_app_name', 'caption': '{*actor*} sent u something',
'description': 'some description',
"media": [{ "type": "image", "src": "http://bit.ly/105QYr", "href": "http://bit.ly/105QYr"}]
};
//action links can only be seen AFTER the feed is published
var action_links = [{ 'text': 'Send him/her a gift back!', 'href': 'http://somelink.com'}];
FB.Connect.streamPublish(message, attachment, action_links, null, "Share the gift with your friends", callback, false, null);
});
});
function callback(post_id, exception) {
//alert('Wall Post Complete');
}
}
</script>
在/ body标签结束之前,我有这个:
<script type="text/javascript">
function callFBInit(){ FB_RequireFeatures( [ “XFBML”], 功能(){ FB.Facebook.init(“my_app_key”,“/ fbconnect / xd_receiver.htm”); } ); } callFBInit();
btw,我的xd_receiver.htm包含:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns=� http://www.w3.org/1999/xhtml� >
<head>
<title>cross-domain receiver page</title>
</head>
<body>
<script src=�http://static.ak.facebook.com/js/api_lib/v0.4/xdcommreceiver.debug.js� type=� text/javascript� ></script>
</body>
</html>
希望你们能帮帮忙。 THX
答案 0 :(得分:2)
您好我可以回答我自己的问题
我解决了我的问题
streamPublish对话框看起来像“冻结”的原因似乎是z-index(一个CSS问题!)
我以前在我的应用程序上有一个背景图像,它的z-index为-10(我的逻辑是它应该尽可能远)。
我把它改为-1,瞧,facebook对话框适用于Safari和Firefox(所有新版本)
虽然没有用IE测试,但由于IE不再是一个巨大的市场,我认为我不应该浪费太多时间考虑它 [http://www.w3schools.com/browsers/browsers_stats.asp][1]
我怎么得出结论我应该调整z-index?我回溯了所有的步骤并将其缩减为一个非常简单的iframe应用程序,只有html文件。需要时间,但它有所帮助!
答案 1 :(得分:0)
我有完全相同的问题。从技术上讲,streamPublish可以工作,但facebook窗口只是sux。我使用3个环境来测试它,但行为不同:
使用IceWeasel的Debian Linux(基本上是Firefox)。这是我的开发环境(使用Haxe作为flash部分)。一旦我的facebook-flash-application弹出facebook窗口(使用Java-Script FB.Connect.streamPublish),如果我点击“发布”或“跳过”(取消),Facebook窗口就会变成白色,让我一起闪光区前面的白色矩形。另请注意,Facebook窗口中任何时候都没有标题栏。 Flash应用仍然在后台运行,但是使用白色矩形,我无法点击任何地方。重新启动...
使用IE 8.0的Windows XP。几乎相同的行为。唯一的区别是,如果我点击旁边的闪光区域,它会得到焦点,FB窗口会消失,但我知道它仍然在内部打开,因为我无法再次弹出它。
使用Firefox的Windows XP。现在这是非常不同的(请注意,我没有在这里混淆操作系统和浏览器名称)。事实上,这几乎可以工作:标题栏上有'x'右上角关闭它,没关系。但是如果我点击“发布”或“跳过”,窗口将不会关闭。尽管如此,它仍然是完全白色的,除了标题栏,所以我仍然可以关闭Facebook窗口,然后再次显示它而不重新启动。
我认为这些信息不会有所帮助,但是嘿,总比没有好。因为几个月这让我心烦,现在我的老板被打乱了。 Facebook废话!
答案 2 :(得分:0)
好的,我设法通过省略FB.Facebook.init()调用中的channel path参数(使用xd_receiver.htm的那个)来使其工作。对不起fooyee,我已经在其他地方见过你已经知道的了,但是我应该在这里评论其他人到达这个页面。
它适用于我之前讲过的3个环境。现在最大的问题是:为什么这不适用于频道路径。我必须承认我没有弄清楚xd_receiver.htm文件到底用于什么,但是在某些情况下你似乎不需要它...只是在我的代码中对它进行了评论,以防我以后遇到一些问题...毫无疑问,窗口没有关闭问题与该死的文件有关。这个问题让我发疯,我不喜欢那些没有真正解决的奇怪的东西。