facebook iframe stream.Publish无法关闭对话框或跳过

时间:2010-02-21 17:30:30

标签: google-app-engine facebook

我把头发拉过来:( 花了10个小时但没有出来

我读了这个帖子 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

3 个答案:

答案 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个环境来测试它,但行为不同:

  1. 使用IceWeasel的Debian Linux(基本上是Firefox)。这是我的开发环境(使用Haxe作为flash部分)。一旦我的facebook-flash-application弹出facebook窗口(使用Java-Script FB.Connect.streamPublish),如果我点击“发布”或“跳过”(取消),Facebook窗口就会变成白色,让我一起闪光区前面的白色矩形。另请注意,Facebook窗口中任何时候都没有标题栏。 Flash应用仍然在后台运行,但是使用白色矩形,我无法点击任何地方。重新启动...

  2. 使用IE 8.0的Windows XP。几乎相同的行为。唯一的区别是,如果我点击旁边的闪光区域,它会得到焦点,FB窗口会消失,但我知道它仍然在内部打开,因为我无法再次弹出它。

  3. 使用Firefox的Windows XP。现在这是非常不同的(请注意,我没有在这里混淆操作系统和浏览器名称)。事实上,这几乎可以工作:标题栏上有'x'右上角关闭它,没关系。但是如果我点击“发布”或“跳过”,窗口将不会关闭。尽管如此,它仍然是完全白色的,除了标题栏,所以我仍然可以关闭Facebook窗口,然后再次显示它而不重新启动。

  4. 我认为这些信息不会有所帮助,但是嘿,总比没有好。因为几个月这让我心烦,现在我的老板被打乱了。 Facebook废话!

答案 2 :(得分:0)

好的,我设法通过省略FB.Facebook.init()调用中的channel path参数(使用xd_receiver.htm的那个)来使其工作。对不起fooyee,我已经在其他地方见过你已经知道的了,但是我应该在这里评论其他人到达这个页面。

它适用于我之前讲过的3个环境。现在最大的问题是:为什么这不适用于频道路径。我必须承认我没有弄清楚xd_receiver.htm文件到底用于什么,但是在某些情况下你似乎不需要它...只是在我的代码中对它进行了评论,以防我以后遇到一些问题...毫无疑问,窗口没有关闭问题与该死的文件有关。这个问题让我发疯,我不喜欢那些没有真正解决的奇怪的东西。