FQLで簡単に取得できます。
likeテーブル、page_fanテーブルのどちらかで取得できますが、今回はファンページをいいねしているかユーザーをチェックしたかったので、page_fanテーブルを使って取得するようにしました。
1 | SELECT page_id,type,profile_section,created_time FROM page_fan WHERE uid = me() AND page_id = [page_id] |
対象のサーバーがPHP4だったのでFacebookのSDKでは対象外なので、JavaScriptで取得するように実装したコードはこちらです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | <!-- 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する
という流れです。