I m trying to create a Facebook Connect application that displays a friend invite dialog within the page using Facebook s Javascript API (through a FBMLPopupDialog).
The trouble is to display a friend invite dialog you use a multi-friend form which requires an action="url" attribute that represents the URL to redirect your page to when the user completes or skips the form. The problem is that I want to just close the FBMLPopupDialog (the same behavior as if the user just hit the X button on the popup dialog). The best I can do is redirect the user back to the page they were on basically a reload but they lose all AJAX/Flash application state.
I m wondering if any Facebook Connect developers have run into this issue and have a good way to simply display a friend invite "lightbox" dialog within their website where they don t want to "refresh" or "redirect" when the user finishes.
The facebook connect JS API provides a FB.Connect.inviteConnectUsers, which provides a nice dialog but only connects existing users of your application who also have a Facebook account and haven t connected.
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>
+
<fb:request-form
+
//Redirect back to this page
action=" + document.location + "
+
method="POST"
+
invite="true"
+
type="Weblings Invite"
+
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 />"
+
>
+
<fb:multi-friend-selector
+
rows="2"
+
cols="4"
+
bypass="Cancel"
+
showborder="false"
+
actiontext="Use this form to invite your friends to connect with WebWars: Weblings."/>
+
</fb:request-form> +
</fb:fbml> ;
return fbml;
}