Функция обратного вызова с новой кнопкой Facebook Share
Я пытаюсь подписаться на событие "edge.create" вместе с новой кнопкой "Поделиться в Facebook", но безуспешно. Я использую стандартную подписку на событие:
FB.Event.subscribe('edge.create',
function(response) {
console.log(response);
}
);
Событие не запускается... Вместо этого оно работает с помощью кнопки Like
Любое предложение?
2 ответа
Кнопка "Поделиться" на Facebook устарела в пользу кнопки "Нравится". Из их документов:
Кнопка "Поделиться" устарела в пользу кнопки "Нравится" и больше не поддерживается. Пожалуйста, используйте кнопку "Мне нравится", когда это возможно, чтобы привлечь максимальный трафик для ваших приложений
Вы можете использовать событие с кнопкой "Мне нравится", однако, если вы хотите отслеживать кнопку общего доступа, это все же возможно с использованием некоторого JavaScript. Вы можете добавить событие клика к своей кнопке FB.
Вот пример, который я использую.
window.fbAsyncInit = function () {
FB.init({
appId: 'your app id',
status: true,
cookie: true,
xfbml: true,
oauth: true
});
$('#facebook-share').click(function () {
FB.ui({
method: 'feed',
link: document.URL,
caption: 'example',
}, function (response) {
if (response === null) {
console.log('post was not shared');
} else {
console.log('post was shared');
}
});
});
};
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.async = true;
js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
Создать приложение для Facebook и получить одобрение скучно и может занять так много времени...
Альтернативный способ, который я сделал здесь для тех, кто не хочет публиковать приложение только для этого:
jQuery("#div_share").click(function() {
var url = "http://www.facebook.com/sharer/sharer.php?u=YOUR_URL&title=YOUR_TITLE";
var openDialog = function(uri, name, options, closeCallback) {
var win = window.open(uri, name, options);
var interval = window.setInterval(function() {
try {
if (win == null || win.closed) {
window.clearInterval(interval);
closeCallback(win);
}
}
catch (e) {
}
}, 1000);
return win;
};
openDialog(url,'Facebook','width=640,height=580', function(){
jQuery("#div_share").hide();
jQuery("#formulario").show();
});
});
Он откроет диалоговое окно JavaScript, чтобы поделиться им и узнать, когда пользователь закроет его. Не гарантируется, что они действительно делятся контентом... но..:)