Callback function with new Facebook Share button

10.4k Views Asked by At

I'm trying to subscribe to the "edge.create" event in conjunction with new Facebook Share button without any luck. I'm using the standard event subscription:

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

The event is not fired... It works instead with the Like button

Any suggestion?

2

There are 2 best solutions below

0
On

The facebook share button has been deprecated in favor of the like button. From their docs:

The Share button has been deprecated in favor of the Like button, and will no longer be supported. Please use the Like button whenever possible to drive maximum traffic to your apps.

You can use the event with the like button, however if you want to track the shared button then it is still possible with some javascript. You can add a click event to your FB share button.

Here is an example I'm using.

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'));
0
On

Create a facebook app and get approved are boring and can take so much time...

An alternative way I made here to who don't want to publish an APP just for it is:

   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();
        });
    });

It will open a javascript dialog to share, and know when the user close it. It's not guaranteed that they really share the content... but.. :)