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する
という流れです。