このコードを使用して、アプリに入る前にユーザーがページを「気に入った」かどうかを確認しています。
require_once 'facebook-php-sdk/src/facebook.php';
// Create our Application instance.
$this->facebook = new Facebook(array(
'appId' => 'APPID',
'secret' => 'APPSECRET',
'cookie' => true,
));
$session = $this->facebook->getSession();
if(!empty($session)) {
$access_token = $this->facebook->getAccessToken();
$fql_multiquery_url = 'https://graph.facebook.com/me/likes?access_token='.$access_token;
$fql_multiquery_result = file_get_contents($fql_multiquery_url);
$fql_multiquery_obj = json_decode($fql_multiquery_result, true);
$liked = false;
foreach($fql_multiquery_obj['data'] as $like){
if($like['id'] == 'PageID'){
$liked = true;
}
}
if($liked){
$data['main_content'] = 'welcome_message';
} else {
$data['main_content'] = 'before_like';
}
$this->load->view('includes/template', $data);
} else {
$req_perms = "publish_stream,offline_access,user_status,email,read_stream,user_likes";
$login_url = $this->facebook->getLoginUrl(array('canvas'=> 1,'fbconnect' => 0,'req_perms' => $req_perms, 'redirect_uri' => 'APP REDIRECT URL'));
echo "<script type='text/javascript'>top.location.href = '$login_url';</script>";exit;
}
(あなたの好きなものをループすることが最善の解決策ではないことは知っていますが、私にとっては最も一貫して機能するようです)。
私には問題なく動作します (オフィス内の他のユーザーも問題なく動作します) が、一部のユーザーには失敗します (もちろん、エラー メッセージは送信されません)。いいねをチェックして一貫性を持たせるより良い方法はありますか?