views:

42

answers:

3

Is it possible to somehow monitor who "Likes" my Facebook page, by intercepting the clicks in the Facebook Like Box?

http://developers.facebook.com/docs/reference/plugins/like-box

I would like to find out if the user who comes to my site already likes it, and enable some additional functionality based on this (for example, less advertising).

A: 

It's embedded in an iFrame, so from the way they suggest you implement it, no it isn't possible.

However if you take a look at the code:

http://www.facebook.com/plugins/likebox.php?href=http://www.facebook.com/platform&width=292&colorscheme=light&connections=10&stream=true&header=true&height=587

There may be a way if you fiddle with it to call another function on the like buttons click that calls an ajax function you determine if you host all the code on your site, although FB probably has put things in place to not make that possible, or if it is it may be against T&C so worth checking out.

Tom Gullen
+1  A: 

You can use the javascript sdk to subscribe to the event edge.create. See the documentation here for that: http://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe

FB.Event.subscribe('edge.create', function(response) {
  // A user liked the item, read the response and handle
});

Note, this will only work if you are using the xfbml version of the Like box. It wont work on the iframe version.

Nathan Totten
+1  A: 

I don't know how to fetch just all people that have pressed the like button for an object, but you can subscribe to the like-button-press event. You can then use the information about the current user, and save it to your own database. The event that you are listening to is edge.create, and you do that with FB's own FB.Event.subscribe. It could look something like this:

window.fbAsyncInit = function() {
    FB.init({
      appId  : 'xxxxxxxxxxxxxxxxxxxxxxxxx',
      status : true, // check login status
      cookie : true, // enable cookies to allow the server to access the session
      xfbml  : true  // parse XFBML
    });
    FB.Event.subscribe('edge.create', function(href, widget) {
        FB.api('/me', function(response) {
            alert(response.first_name + " " + response.last_name + ":" + response.id +" pressed " + href); // Replace this with an ajax call to your server
        });
    });
};
Aspelund