FQLで簡単に取得できます。

likeテーブル、page_fanテーブルのどちらかで取得できますが、今回はファンページをいいねしているかユーザーをチェックしたかったので、page_fanテーブルを使って取得するようにしました。

SELECT page_id,type,profile_section,created_time FROM page_fan WHERE uid = me() AND page_id = [page_id]

対象のサーバーがPHP4だったのでFacebookのSDKでは対象外なので、JavaScriptで取得するように実装したコードはこちらです。

<!-- facabook like -->
<script type="text/javascript">

  window.fbAsyncInit = function () {
    // init
    FB.init({
      appId: '[appId]',
      status: true,
      cookie: true,
      oauth: true,
      xfbml: true
    });

    // login
    $("#facebook_login").click(function () {
      FB.login(function (resp) {
        if (resp.authResponse) {
          checkLike();
        }
      }, {perms: 'read_stream'});
    });

    var checkLike = function () {
      FB.api(
        {
            method : 'fql.query',
            query : 'SELECT uid,page_id,type,profile_section,created_time FROM page_fan WHERE uid = me() AND page_id = [page_id]'
        },
        function(response) {
            //console.log(response);
            var form = '<form name="regist_form" id="regist" method="post" action="regist.php">';
            var result = 'ng'
            if (response.length > 0 && response[0].page_id == '[page_id]') {
                // ok
                result = 'ok'
                form += '<input type="hidden" name="uid" value="'+response[0].uid+'" />';
            }
            form += '<input type="hidden" name="mode" value="'+result+'" />';
            form += '</form>';
            $('body').append(form);
            $('#regist').submit();

        });
    }

  };

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

</script>
<div id="fb-root"></div>
<!-- facabook like -->

[appId]、[page_id]は任意のものに変更します。

  • パーミッションは”read_stream”にしてログインを要求
  • ログインが成功して、ユーザーが承認したら、FQLで対象のファンページにいいねしているかチェックする
  • いいねしてたら、regist.phpにPOSTする

という流れです。

page_fan – Facebook開発者.