Для того, о чем вы говорите, вы бы хотели использовать диалог подачи.Он достаточно гибкий, поэтому вам просто нужно настроить ссылки и передать некоторые переменные.Я не вижу, чтобы диалог подачи прекратился, поскольку вы упомянули, что они служат различным целям.Я думаю, что они настаивают на том, что им легче пользоваться, и их вряд ли будут злоупотреблять.
Вам нужно зарегистрировать приложение и обязательно инициализировать JavaScript javascript SDK, прежде чем вызывать функцию ниже.Если у вас возникли проблемы с вашим всплывающим окном, это, вероятно, связано с тем, что в процессе инициализации FB возникают проблемы.Я добавил вторую функцию, которую использую для инициации Facebook.Обе функции используют jQuery, поэтому вам, возможно, придется изменить, если вы его не используете.
Вы можете создать довольно общую функцию, например, такую:
$.shareMe = function(myName, myLink, myPicture, myCaption ) {
FB.ui(
{
method: 'feed',
name: myName,
link: myLink,
picture: myPicture,
caption: myCaption
},
function(response) {
if (response && response.post_id) {
alert('Thanks for Sharing.');
} else {
alert('Post was not published.');
}
}
);
}
и для инициализации Facebook:
$.initFacebook = function(options){
$('#fb-root').remove();
$('body').append('<div id="fb-root"></div>');
var settings = {
'appId' : null,
'callback' : null,
'channelUrl' : null,
'status' : true,
'cookie' : true,
'xfbml' : true
};
if ( options ) {
$.extend( settings, options );
}
if( typeof( xc_app_id ) == 'undefined' ) { window.xc_app_id = settings.appId; }
window.fbAsyncInit = function() {
if(settings.channelUrl==null) {
FB.init({appId: settings.appId, status: settings.status, cookie: settings.cookie, xfbml: settings.xfbml, oauth: true, authResponse: true });
} else {
settings.channelUrl=location.protocol+'//'+settings.channelUrl;
FB.init({appId: settings.appId, status: settings.status, cookie: settings.cookie, xfbml: settings.xfbml, oauth: true, authResponse: true, channelUrl: settings.channelUrl });
}
if(typeof settings.callback == 'function'){ settings.callback.call(this); }
};
(function() {
var e = document.createElement('script');
e.async = true;
e.src = '//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
}
и для его вызова вы просто используете $ .initFacebook ({appId, 'yourAppId'});Есть и другие варианты, которые вы можете найти в документации, если они вам нужны.