How to check IF user has ALREADY liked the facebook page?
Asked Answered
A

2

8

I have a like button on my website (which is for users to like the fb fan page).

If the user clicks like, I check to see if the even has been fired (event subscribe), and then display some content to them.

What I would really appreciate help with is the following:

If the user is logged in to facebook AND they already like the page, I want it to display "You're already a fan!" and show the content. (rather than displaying the greyed out like button)

OR

If the user is not logged in to facebook and they click the like button, I want it to display "You're already a fan!" and show the content. (rather than displaying the greyed out like button)

edit: Guys, I've researched this on SO and have found similar questions but not quite what I'm after. Maybe I'm mistaken but if someone can provide a link to one which describes my exact problem, it would be a lot more helpful than a - on the question. I have checked the following:
Check if the user is connected to facebook and then check if he liked a page
Facebook Like Box: How to detect if user already liked the page?
Facebook LIKE button hiding when page is already LIKED by user
How to check whether user has liked the page or not using php/javascript
Check if user already likes fanpage

Auspicate answered 13/9, 2011 at 6:33 Comment(2)
I'm not one of the downvotes, but people might be more inclined to help if you include that comment in your question; link to some questions you've already tried and say why they don't help, so people know you've tried to do it yourself already.Milksop
possible duplicate of How to check if a user likes my Facebook Page or URL using Facebook's APIBroncho
H
3

If you use the facebook php API. i've came up with this short function that u can include inside the base_facebook.php file into the class BaseFacebook.

public function userIsFan() {
    $sr = $this->getSignedRequest();
    if($sr && is_array($sr)){
        if(array_key_exists('page', $sr)){
            return $sr['page']['liked'] == 1;
        }
    }
    return 0;
}
Hughs answered 23/10, 2012 at 0:8 Comment(2)
Probably better to extend the BaseFacebook class instead of modifying it, otherwise the next time you come to use this function in a different project you'll wonder why it suddenly doesn't work when you grab a fresh copy of the base class. Alternatively if FB change their base class and you upgrade, your custom functions will all get lost (trust me, it happens...)Obligor
This is not working anymore. Signed request no more has information about page liking.Stet
W
0

Make sure you are using xfbml, this one works for me

FB.Event.subscribe('auth.authResponseChange', function(response) {
        FB.api('/me/likes/[page_id]',
          function(response) {
              //console.log(response); - see what the response is on your console.
              if(response.data[0])
                //use script to display your content alert("Liked");
              else
                // just do nothing, display like button alert("Not yet liked");
          }
        );

    });

page_id will be the id not the name of your page, to find out the id, just visit http://graph.facebook.com/[your fb page name]

hope this helps someone in the future.

Waxwing answered 6/3, 2013 at 14:3 Comment(1)
This likely requires the user_likes extended permission to function.Willed

© 2022 - 2024 — McMap. All rights reserved.