我正在尝试创建一个 Facebook Connect 应用程序,该应用程序使用 Facebook 的 Javascript API(通过FBMLPopupDialog)在页面内显示一个朋友邀请对话框。
麻烦的是显示一个朋友邀请对话框,你使用多朋友表单,它需要一个 action="url" 属性,该属性表示当用户完成或跳过表单时将您的页面重定向到的 URL。问题是我只想关闭 FBMLPopupDialog (与用户刚刚点击弹出对话框上的“X”按钮的行为相同)。我能做的最好的就是将用户重定向回他们在重新加载时所在的页面,但他们会丢失所有 AJAX/Flash 应用程序状态。
我想知道是否有任何 Facebook Connect 开发人员遇到了这个问题,并且有一个好方法可以简单地在他们的网站中显示一个朋友邀请“灯箱”对话框,他们不想在用户完成时“刷新”或“重定向” .
facebook connect JS API 提供了一个FB.Connect.inviteConnectUsers,它提供了一个很好的对话框,但只连接您的应用程序的现有用户,这些用户也有一个 Facebook 帐户并且没有连接。
http://bugs.developers.facebook.com/show_bug.cgi?id=4916
function fb_inviteFriends() {
//Invite users
log("Inviting users...");
FB.Connect.requireSession(
function() { //Connect succes
var uid = FB.Facebook.apiClient.get_session().uid;
log('FB CONNECT SUCCESS: ' + uid);
//Invite users
log("Inviting users...");
//Update server with connected account
updateAccountFacebookUID();
var fbml = fb_getInviteFBML() ;
var dialog = new FB.UI. FBMLPopupDialog("Weblings Invite", fbml) ;
//dialog.setFBMLContent(fbml);
dialog.setContentWidth(650);
dialog.setContentHeight(450);
dialog.show();
},
//Connect cancelled
function() {
//User cancelled the connect
log("FB Connect cancelled:");
}
);
}
function fb_getInviteFBML() {
var uid = FB.Facebook.apiClient.get_session().uid;
var fbml = "";
fbml =
'<fb:fbml>\n' +
'<fb:request-form\n'+
//Redirect back to this page
' action="'+ document.location +'"\n'+
' method="POST"\n'+
' invite="true"\n'+
' type="Weblings Invite"\n' +
' content="I need your help to discover all the Weblings and save the Internet! WebWars: Weblings is a cool new game where we can collect fantastic creatures while surfing our favorite websites. Come find the missing Weblings with me!'+
//Callback the server with the appropriate Webwars Account URL
' <fb:req-choice url=\''+ WebwarsFB.WebwarsAccountServer +'/SplashPage.aspx?action=ref&reftype=Facebook' label=\'Check out WebWars: Weblings\' />"\n'+
'>\n'+
' <fb:multi-friend-selector\n'+
' rows="2"\n'+
' cols="4"\n'+
' bypass="Cancel"\n'+
' showborder="false"\n'+
' actiontext="Use this form to invite your friends to connect with WebWars: Weblings."/>\n'+
' </fb:request-form>'+
' </fb:fbml>';
return fbml;
}