user1025488
user1025488

Reputation: 221

Check if user liked page or not

I have read a lot of related topics here regarding this problem but I am still not able to do something like this

http://www.facebook.com/Dominos/app_252492331452398

Below is the code i am using

here are my questions.

Here is the code

<!DOCTYPE html>
<html>
<head>
  <title>Fbjquery</title>
  <%= stylesheet_link_tag    "application", :media => "all" %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>
</head>
<body>
<div id="fb-root"></div>
<h2>Updated JS SDK example</h2><br />
<div id="user-info"></div>
<p><button id="fb-auth">Login</button></p>


<script>
window.fbAsyncInit = function() {
  FB.init({ appId: 'App_ID', 
        status: true, 
        cookie: true,
        xfbml: true,
        oauth: true});

  function updateButton(response) {
    var button = document.getElementById('fb-auth');
        console.log("inside update button "+response.authResponse);
    if (response.authResponse) {
        console.log(response.authResponse);
      //user is already logged in and connected
      var userInfo = document.getElementById('user-info');
      FB.api('/me', function(response) {
        userInfo.innerHTML = '<img src="https://graph.facebook.com/' 
      + response.id + '/picture">' + response.name;
        button.innerHTML = 'Logout';
      });
      button.onclick = function() {
        FB.logout(function(response) {
          var userInfo = document.getElementById('user-info');
          userInfo.innerHTML="";
    });
      };
    } else {
      //user is not connected to your app or logged out
      button.innerHTML = 'Login';
      button.onclick = function() {
        FB.login(function(response) {
      if (response.authResponse) {
            FB.api('/me', function(response) {
          var userInfo = document.getElementById('user-info');
          userInfo.innerHTML = 
                '<img src="https://graph.facebook.com/' 
            + response.id + '/picture" style="margin-right:5px"/>' 
            + response.name;
        });    
          } else {
            //user cancelled login or did not grant authorization
          }
        }, {scope:'email'});    
      }
    }
  }

  // run once with current status and whenever the status changes

  FB.getLoginStatus(updateButton);
  FB.Event.subscribe('auth.statusChange', updateButton);    


};

(function() {
  var e = document.createElement('script'); e.async = true;
  e.src = document.location.protocol 
    + '//connect.facebook.net/en_US/all.js';
  document.getElementById('fb-root').appendChild(e);
}());

</script>

</body>
</html>

Upvotes: 0

Views: 8830

Answers (2)

Eugene
Eugene

Reputation: 2974

You can do this in a programmatic way as well, not necessarily just in the context of a tab.

Note that it will require you to ask for the "user_likes" permission from the user in your O-Auth connect dialog.

This code snippet will test for whether someone currently likes something or not:

    FB.api('/me/likes/MY_PAGE_ID', {limit: 1}, function(r) { 
        if (r.data.length == 1) {
            //do stuff when the user is a liker
        } else {
            //do stuff when the user is not currently a liker           
        }
    });

If you want to catch the event when the user clicks the like button, then you can use FB.Event.subscribe:

    FB.Event.subscribe('edge.create',
         function(response) {
              //Do stuff when the user just clicked a "like" button
         }
    );

Upvotes: 3

Turgut
Turgut

Reputation: 590

On a Facebook fan page, when the user clicks the Like button, the whole page gets reloaded and Facebook sends an HTTP post to your website with a parameter called signed_request that you would need to decode and look at with server code. Signed Request is documented here. Once decoded, you will need to look at the page.liked value.

Might be helpful:

Fans-only content in facebook with asp.net C# sdk

Upvotes: 2

Related Questions