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