facebookページでよくある「いいね」してない人には情報をチラ見せして、イイネを誘導するページの作り方を勉強しました。
やりかたとしては、いいねを押したかどうかを判別して、イイネしてくれた人にはlike.phpをそうじゃない人にはdislike.phpを見せるように振り分けをします。
まず、githubからphp-sdkをダウンロード。
srcフォルダの3ファイルをサーバーの適当な場所にアップします。
次にfacebookページとなるindex.phpを以下のように
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php require_once './facebook.php'; // Create our Application instance. $app_id = "あなたのapp_id"; $app_secret = "あなたのapp_secret"; $facebook = new Facebook(array( 'appId' => $app_id, 'secret' => $app_secret, 'cookie' => true, )); $signed_request = $facebook->getSignedRequest(); $like_status = $signed_request["page"]["liked"]; if ($like_status) { include("like.php"); //「いいね!」されたときのコンテンツ } else { include("dislike.php"); //「いいね!」されてないときのコンテンツ } ?> |
イイネしてくれた人に見せるlike.phpは以下に
1 2 3 4 5 6 7 8 9 10 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>title</title> </head> <body> <h1>あなたはイイネ!しました。</h1> </body> </html> |
dislike.php
1 2 3 4 5 6 7 8 9 10 11 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>title</title> </head> <body> <h1>あなたはイイネ!していません。今スグ↑↑</h1> </body> </html> |
これでOKです。
最初はこちらを参考にしていたのですが、どうにもwarningが出るので、こちらを参考にしました。
facebook.phpは頭でrequire_onceで呼び出しをしないと以下のようなwarningが出るようです。
Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at /XXXXXX/index.php:3) in /XXXXXX/facebook.php on line 37
こちらのコードではfacebook.phpを呼び出す前に
1 |
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'."n" ?> |
となっていたのがいけないようです。