Я пытаюсь создать приложение Facebook Connect, которое отображает диалог приглашения друга на странице с помощью API JavaScript Javascript (через FBMLPopupDialog).
Проблема заключается в отображении диалога приглашения друга, в котором используется форма , которая требует атрибута action = "url", который представляет URL-адрес для перенаправления вашей страницы, когда пользователь завершит или пропустит форму. Проблема в том, что я хочу просто закрыть FBMLPopupDialog (такое же поведение, как если бы пользователь просто нажал кнопку "X" во всплывающем диалоговом окне). Лучшее, что я могу сделать, это перенаправить пользователя на страницу, на которой они были, в основном, перезагружать, но они теряют все состояние приложения AJAX/Flash.
Мне интересно, если какие-либо разработчики Facebook Connect столкнулись с этой проблемой и у вас есть хороший способ просто показать приглашение друзей на "лайтбоксы" на своем веб-сайте, где они не хотят "обновлять" или "перенаправлять", когда пользователь заканчивает.
API-интерфейс facebook для подключения 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;
}