Javascript Facebook connect显示邀请好友对话框并在完成时关闭
我正在尝试创建一个Facebook Connect应用程序,该应用程序使用Facebook的Javascript API(通过浏览器)在页面中显示一个好友邀请对话框 问题在于,如果您使用多好友表单,则需要显示一个好友邀请对话框,该对话框需要一个action=“url”属性,该属性表示用户完成或跳过表单时将页面重定向到的url。问题是,我只想关闭FBMLPopupDialog(与用户只点击弹出对话框上的“X”按钮的行为相同)。我所能做的最好的事情就是将用户重定向回他们基本上处于重新加载状态的页面,但他们会丢失所有AJAX/Flash应用程序状态 我想知道是否有Facebook Connect开发人员遇到过这个问题,并且有一个好方法可以简单地在他们的网站中显示一个朋友邀请“lightbox”对话框,当用户完成时,他们不想在该对话框中“刷新”或“重定向” FacebookConnect JSAPI提供了一个对话框,它提供了一个很好的对话框,但只连接您的应用程序的现有用户,这些用户也有一个facebook帐户,但尚未连接Javascript Facebook connect显示邀请好友对话框并在完成时关闭,javascript,facebook,social-networking,Javascript,Facebook,Social Networking,我正在尝试创建一个Facebook Connect应用程序,该应用程序使用Facebook的Javascript API(通过浏览器)在页面中显示一个好友邀请对话框 问题在于,如果您使用多好友表单,则需要显示一个好友邀请对话框,该对话框需要一个action=“url”属性,该属性表示用户完成或跳过表单时将页面重定向到的url。问题是,我只想关闭FBMLPopupDialog(与用户只点击弹出对话框上的“X”按钮的行为相同)。我所能做的最好的事情就是将用户重定向回他们基本上处于重新加载状态的页面,
函数fb\u(){
//邀请用户
日志(“邀请用户…”);
FB.Connect.requireSession(
函数(){//连接成功
var uid=FB.Facebook.apiClient.get_session().uid;
日志('FB连接成功:'+uid);
//邀请用户
日志(“邀请用户…”);
//使用连接的帐户更新服务器
updateAccountFacebookUID();
var fbml=fb_getInviteFBML();
var dialog=new FB.UI.fbmlpoppedialog(“Weblings邀请”,fbml);
//对话框。设置fbml内容(fbml);
对话框。设置内容宽度(650);
对话框。设置内容高度(450);
dialog.show();
},
//取消连接
函数(){
//用户取消了连接
日志(“FB连接已取消:”);
}
);
}
函数fb_getInviteFBML(){
var uid=FB.Facebook.apiClient.get_session().uid;
var fbml=“”;
fbml=
“\n”+
“\n”+
“\n”+
' '+
' ';
返回fbml;
}
如果您在某处有此文件xd_receiver.html,请确保使用站点的完整url正确指定xd_receiver.html文件的路径,如下所示:
你能详细解释一下你的应用程序吗。是闪光灯吗?您在服务器端使用什么类型的技术。如果您有PHP,可以使用Jquery lightbox或smoothbox弹出邀请页面。我使用FBML代码邀请我的应用程序,甚至认为我的应用程序的其余部分是Facebook API而不是FBML。下面是一个例子,如果你有PHP,如果你没有,你仍然可以使用它,如果你有问题,让我知道:
我就是这样解决的
My JS/FBML(注意多好友选择器的target=“\u self”
属性):
var-inviteDialog;//保留弹出对话框的引用
函数makeInviteForm(){
//在此处设置请求表单元素
var fbml=“”;
fbml+='';
fbml+='';
fbml+='';
fbml+='';
fbml+='';
inviteDialog=new FB.UI.FBMLPopupDialog(标题,fbml);
}
我的PHP:
<?php
// Do processing here
?>
<script type="text/javascript">
parent.inviteDialog.close(); // You could make this call a function that does additional processing if you want
</script>
parent.inviteDialog.close();//如果需要,可以将此调用设置为执行附加处理的函数
我发现,如果您在请求表单元素中指定target=“\u self”(不是像Domenic建议的那样在朋友选择器中),响应url将加载到iframe中,而不是重新加载整个页面
因此,您可以加载自己的提示,在此时关闭窗口,或者再多做一点工作,向父级发送一条消息,自动关闭整个iframe。如果2011年有人会查找类似的内容,这里是链接:,您需要发送应用程序请求的代码是:
FB.ui({method: 'apprequests', message: 'A request especially for one person.', data: 'tracking information for the user'});
invite表单显示正确,我非常确定我的xd_接收器设置正确。只是“跳过”或“完成”时邀请表单的行为导致整个页面刷新,而不仅仅是关闭FBMLPopupDialog。我遇到了类似的问题,我所做的是将xd_receiver.html文件放在网站的根目录中,问题得到了解决,即对话框正确关闭
<?php
// Do processing here
?>
<script type="text/javascript">
parent.inviteDialog.close(); // You could make this call a function that does additional processing if you want
</script>
FB.ui({method: 'apprequests', message: 'A request especially for one person.', data: 'tracking information for the user'});