Php 关闭Facebook对话框(弹出窗口)

Php 关闭Facebook对话框(弹出窗口),php,facebook,Php,Facebook,我正在构建一个facebook应用程序,它作为iframe运行在站点的选项卡中 对于弹出窗口,我使用以下推荐内容: 当我打开这样的弹出窗口时: var friend_url = "http://www.facebook.com/dialog/apprequests?app_id=**appid**&display=popup&redirect_uri=**canvasurl**&message=Mesage!" window.open(friend_url, "Frien

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

对于弹出窗口,我使用以下推荐内容:

当我打开这样的弹出窗口时:

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"); 
然后一个dialpg弹出窗口打开。 我现在想要的。如果用户单击“接受”或“取消”,对话框窗口应关闭。 我该怎么做


谢谢。

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

编辑以反映以下评论:

var auth_win = window.open(friend_url, "Friends", options);
然后,您需要以某种方式检测用户的操作是否已完成,并发出如下命令:

auth_win.close();

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

然后您必须从开场白开始操作:我如何检测用户正在按什么?您无法知道正在按什么按钮,因为您无法控制弹出内容,对吗?您需要在重定向uri处检测来自Facebook的响应。我已经做了一段时间了,重定向uri的值是多少?(不是确切的值,但它代表什么,我的canvas URI,等等?)我阅读了上面引用的文档,似乎它是canvas_url,所以你可以在查询字符串上传递额外的信息,或者作为锚(散列)。尽管看起来Facebook应该在将top.opener重定向到redirect_URI后关闭窗口本身。但我从未经历过这种行为。