Функция обратного вызова с новой кнопкой «Поделиться в Facebook»

Я безуспешно пытаюсь подписаться на событие «edge.create» в сочетании с новой кнопкой «Поделиться в Facebook». Я использую стандартную подписку на события:

FB.Event.subscribe('edge.create',
    function(response) {
        console.log(response);
    }
);

Событие не запускается... Вместо этого оно работает с кнопкой «Нравится».

Любое предложение?


person Gabriele Perego    schedule 01.12.2013    source источник


Ответы (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'));
person JamesIngold    schedule 13.01.2014

Создать приложение на 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 для совместного использования и узнает, когда пользователь закроет его. Не гарантируется, что они действительно делятся контентом... но... :)

person Tiago Gouvêa    schedule 13.01.2016