FB.ui对话框(iframe)是不可见的

时间:2012-01-18 15:30:33

标签: facebook dialog fb.ui

我正在尝试将stream.publish功能添加到我的网络应用中,但我遇到了“Feed”对话框的问题。

我的代码如下:

        var obj = {
            method: 'feed',
            display: 'iframe',
            name: data.name,
            link: data.link,
            picture: data.picture,
            caption: data.name,
            description: data.description,
            message: data.message,
            actions: [{
                name: data.actions.name,
                link: data.actions.link
            }],
            user_message_prompt: ''
        }

        var resp = FB.ui(obj, function(response) {
            alert("DONE");
        });

如果我使用'popup'代替'iframe',我可以使它工作,但这不是我想要的。

为什么Feed没有出现在我的屏幕上的任何想法???

谢谢!

1 个答案:

答案 0 :(得分:1)

Dialogs documentation

中所述
  

如果您指定iframe,则必须拥有有效的access_token。要获得有效的access_token,请参阅Authentication guide

<强>更新
似乎还有其他一些陈述可能会导致这种行为:

  

iframe:在当前页面的灯箱iframe中显示对话框。由于存在点击劫持的风险,因此仅允许某些特定对话框,并要求您传递有效的access_token

这一个。

  

在Facebook画布页面上,仅支持iframe应用程序的对话框

还有一个关于“发送对话框”的“发送对话框”未在页面标签中与iframe一起打开BUG #246637628719849(可能相关,也可能不相关)。

<强> UPDATE2:
实际上在我的所有应用程序中,我都没有指定FB.ui而没有指定display,因为在实施Dialogs时iframe在大多数情况下效果不佳,没有它Facebook JS-SDK试图使用最合适的显示模式...

<强> UPDATE3:
OP在隐藏的其他DOM元素中有fb-root,导致Dialog不可见(正如他在评论中所述)