Ich versuche, eine Facebook Connect-Anwendung zu erstellen, die einen Freund Einladung Dialog innerhalb der Seite mit Facebook Javascript API (über eine FBMLPopupDialog) angezeigt.Facebook connect Anzeigen von Einladung Freunde Dialog und Abschluss nach Abschluss
Das Problem besteht darin, ein Freundeseinladungsdialogfeld anzuzeigen, das ein Multi-Freundesformular verwendet, das ein action = "url" -Attribut benötigt, das die URL zum Umleiten der Seite an den Benutzer beim Überfüllen oder Überspringen des Formulars darstellt. Das Problem ist, dass ich nur den FBMLPopupDialog schließen möchte (das gleiche Verhalten, als ob der Benutzer einfach die 'X' Schaltfläche im Popup-Dialog drücken würde). Das Beste, was ich tun kann, ist, den Benutzer zurück zu der Seite umzuleiten, auf der sie sich befanden, im Grunde ein Neuladen, aber sie verlieren den gesamten AJAX/Flash-Anwendungszustand.
Ich frage mich, ob Facebook Connect-Entwickler auf dieses Problem gestoßen sind und eine gute Möglichkeit haben, einfach einen "fire invite" -Dialog auf ihrer Website anzuzeigen, wo sie nicht "aktualisieren" oder "umleiten" möchten wenn der Benutzer fertig ist.
Die facebook connect JS API bietet eine FB.Connect.inviteConnectUsers, die einen schönen Dialog bietet, aber nur bestehende Benutzer Ihrer Anwendung verbindet, die auch einen Facebook-Account haben und nicht verbunden sind.
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;
}
Das Formular richtig angezeigt wird laden und ich bin ziemlich sicher, dass mein xd_receiver richtig eingerichtet ist.Es ist nur das Verhalten des Einladungsformulars beim Überspringen oder Beenden bewirkt, dass die gesamte Seite aktualisiert wird, anstatt nur den FBMLPopupDialog zu schließen. – Dougnukem
Ich hatte das gleiche Problem, was ich tat war, dass ich xd_receiver.html Datei auf der Website Root und Problem wurde gelöst, dh Dialog korrekt geschlossen – Sarfraz