【web】Facebook SDKで自分のFacebookページが「いいね!」されているか判定する
Facebook SDKを用いて自分のFacebookページが「いいね!」されているかを判定する方法です。
今回使用するSDKは以下、
※Facebook SDK for PHP v4.0
(PHP5.4以上の環境が必要です。)
0. Facebookページの作成/Facebookアプリの登録
事前にFacebookページを作成しておいてください。
作成したFacebookページの「基本データ」>「FacebookページID」を後ほど使用します。
次にFacebook Developersページからアプリ登録をしておきます。
Facebook Developers
Facebookアプリの登録方法はこちらを参考にしてください。
Facebook SDK for PHP v4.0で「いいね!」をしたFacebookページを取得 - Qiita
登録後に発行されるApp IDとApp Secretを後ほど使用します。
1. Facebook SDK for PHPのインストール
推奨されているcomposerを利用したインストール方法です。
まずは適当なエディタで以下のようなjsonファイル(composer.json)を作成し、composerをインストールしたディレクトリに設置します。
composer.json
{ "require" : { "facebook/php-sdk-v4" : "4.0.*" } }
次にターミナルから同ディレクトリで下記コマンドを実行するだけ。
venderというディレクトリが作成され、その中にFacebook SDKがインストールされています。
%php composer.phar install
もっと詳しい説明は以下
facebook php SDK - composer - とりあえず何でも書く
2. PHPファイルの作成
自分のFacebookページへの「いいね!」判定をしたいページのphpファイルに以下のような処理を追加することで「いいね!」判定をすることができます。
$app_id、$app_secret、$page_idは上記で作成したものに適宜置き換えてください。
また$redirect_uriとautoload.phpの読み込み先もご自身の環境に合わせて変更してください。
<?php session_start(); // Facebookアプリ設定 $app_id = '<App ID>'; $app_secret = '<App Secret>'; $page_id = '<FacebookページID>'; $redirect_uri = 'facebook認証後の戻り先URL'; // 「いいね」をしたページリストにアクセスできる権限を付与 $permissions = array( 'user_likes' ); // Autoloadの読み込み require_once( '/var/www/html/path/to/vendor/autoload.php' ); use Facebook\FacebookSession; use Facebook\FacebookRequest; use Facebook\FacebookRedirectLoginHelper; use Facebook\GraphUser; // SDKの初期化 FacebookSession::setDefaultApplication($app_id, $app_secret); $helper = new FacebookRedirectLoginHelper($redirect_uri); // ユーザー認証 try { if (isset($_SESSION['access_token'])) { // すでにアクセストークンが保持されている場合 $session = new FacebookSession($_SESSION['access_token']); } else { // アクセストークンを保持していない場合は取得 $session = $helper->getSessionFromRedirect(); } } catch (FacebookRequestException $ex) { // When Facebook returns an error. print_r($ex); } catch (\Exception $ex) { // When validation fails or other local issues. print_r($ex); } if (isset($session)) { // アクセストークンを保持 $_SESSION['access_token'] = $session->getToken(); $accessToken = $session->getToken(); // 特定のfacebookページへの「いいね!」の有無をリクエスト $request = new FacebookRequest($session, 'GET', '/me/likes/' . $page_id); $response = $request->execute(); $graphObjList = $response->getGraphObjectList(); if (count($graphObjList) == 1) { // 「いいね!」されている場合の処理 foreach ($graphObjList as $r) { //Facebookページの名前 $name = $r->getProperty('name'); //FacebookページID $fbPageId = $r->getProperty('id'); echo '<p><a href="http://www.facebook.com/' . $fbPageId . '">' . $name . '</a>にいいね!しています</p>'; } } else { // 「いいね!」されていない場合の処理 echo '「いいね!」していません。'; } } else { // Facebook認証されていない場合はログインページへ $loginUrl = $helper->getLoginUrl($permissions); echo '<a href="' . $loginUrl . '">Facebookログイン</a>'; } ?>
参照URL
Getting Started
Facebook SDK for PHP v4.0で「いいね!」をしたFacebookページを取得 - Qiita
Facebook SDK PHP v4 — a complete guide! | Ben Marshall
facebook php SDK - composer - とりあえず何でも書く