【问题标题】:Close Facebook Dialog (popup)关闭 Facebook 对话框(弹出窗口)
【发布时间】:2011-07-15 17:14:19
【问题描述】:

我正在构建一个 facebook 应用程序,它作为 iframe 在网站的选项卡中运行。

对于弹出窗口,我使用来自here 的推荐内容:

当我像这样打开一个弹出窗口时:

var friend_url = "http://www.facebook.com/dialog/apprequests?app_id=**appid**&display=popup&redirect_uri=**canvasurl**&message=Mesage!"
window.open(friend_url, "Friends", "height=400,width=580,modal=yes,alwaysRaised=yes"); 

然后一个拨号弹出窗口打开。 我现在想要什么。如果用户单击、接受或取消对话窗口应该关闭。 我该怎么做?

谢谢。

【问题讨论】:

    标签: php facebook


    【解决方案1】:

    您作为redirect_uri 的值提供的页面可以发出JavaScript 命令self.close();,在用户选择“接受”或“取消”后,Facebook 将重定向到提供的redirect_uri 位置,关闭窗口.只需确保在关闭窗口之前执行您需要做的任何处理:错误处理或处理响应。一旦你这样做,它就消失了!

    已编辑以反映以下评论:

    var auth_win = window.open(friend_url, "Friends", options);
    

    然后您需要以某种方式检测用户的操作是否已完成,并发出类似以下内容:

    auth_win.close();
    

    如果您无法检测到操作何时完成,则说明存在一些断开连接。如果您的意思是 redirect_uri 始终是您的选项卡应用程序或您的画布 URL,那么您可以将参数添加到查询字符串,即 url?auth=complete 或在哈希之后,即 url#authorized。然后一旦检测到这一点,关闭变量引用的窗口。

    【讨论】:

    • 那么你必须从开瓶器开始:
    • 如何检测用户推送的内容?
    • 由于您无法控制弹出内容,因此您无法分辨正在按下哪些按钮,对吗?您需要在 redirect_uri 检测 Facebook 的响应。我已经有一段时间没有这样做了,redirect_uri 的值是多少? (不是确切的值,而是它代表什么,我的画布 URI 等?)
    • 我阅读了上面引用的文档,似乎是 canvas_url,因此您可以在查询字符串或作为锚点(哈希)传递额外信息。
    • 虽然 Facebook 似乎应该在将 top.opener 重定向到 redirect_uri 后自行关闭窗口。不过,我从未经历过这种行为。
    猜你喜欢
    • 1970-01-01
    • 2012-01-04
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    相关资源
    最近更新 更多