Facebook のPHP SDKの下準備とサンプル
FacebookのPHP SDKを使うと、外部サイトへFacebookページの投稿や写真データを表示させることが出来ます。
開発者登録とAppIDの取得
まずは、Facebookアプリの開発者登録を行いAppIDを取得します。
開発者登録に必要なもの
- Facebookのアカウント
- クレジットカードか携帯電話番号(SMS)
Facebook開発者登録
Facebook developersページを開きます。
Appsメニューの「Register as a Developer」をクリックして下さい。
「開発者として登録」ダイヤログが表示されます。
「はい」にして「次へ」ボタンをクリックします。
携帯電話番号を入力して「SMSで受け取る」ボタンをクリックすると携帯(スマートフォン)のSMSに確認コードが送られてきますので、「確認コード」入力欄に入力します。
「登録ボタン」をクリックして登録して下さい。
AppIDとアプリのシークレットキーの取得
Facebook PHP SDKをダウンロードして下さい。
https://github.com/facebook/facebook-php-sdk
次に必要なのがAppIDとアプリのシークレットキーとなります。
新しいアプリの作成
Facebookにログインした状態で、Facebookのデベロッパーページにアクセスします。
https://developers.facebook.com/apps
上のアプリメニューから新しいアプリを作成をクリックして新しいアプリを作成します。
Display Nameは任意のもので大丈夫です。
カテゴリー選択は、あったものを選択します。
AppIDとアプリのシークレットキーの確認方法
APPのダッシュボードでAppIDとアプリのシークレットキーを取得することが出来できます。
アクセストークンの取得
アクセストークンを取得します。
これは”getAccessToken()“でアクセストークンが上手く取得出来なかった時の保険として使います。
https://developers.facebook.com/tools/accesstoken/
ここでデバックボタンをクリックすると、アクセストークンの情報が得られます。
有効期限が1時時間後なので、取り合えず60日間有効期限のアクセストークンを取得します。
以下のURLでアクセスすると、ページに「access_token=CAAJ…l1Cj&expires=5182651」の様に表示され60日間有効期限のアクセストークンが表示されます。こちらをコピーしておきます。
https://graph.facebook.com/oauth/access_token?client_id=【App ID/API Key】&client_secret=【アプリのシークレットキー】&grant_type=fb_exchange_token&fb_exchange_token=【アクセストークン】
デバッカーページで先ほどのページに表示されたアクセストークンを入力してデバックボタンをクリックすると有効期限が60日になっているのが確認出来ます。
feedを取得したいページIDの確認
feedを取得したいページのIDを取得します。
取得したいページがFacebookのページの場合は、URL中にある数字の部分
例)
https://www.facebook.com/pages/XXXXXXX/123456789012345?fref=ts
個人のfeedの場合は個人のURLの「www.〜」 の部分を「graph.〜」に変更して確認出来ます。
これで下準備が完了です。
feedの取得方法のサンプル
先ほどダウンロードしたFacebook PHP SDKをサイトの適当な場所に置き、requireで「Facebook.php」ファイルを読込みます。
require '/XXXX/YYYY/ZZZZ/src/facebook.php'; $appId = '【アプリID】'; $secret = '【アプリのシークレットキー】'; $id = '【ページのID】'; $facebook = new Facebook(array( 'appId' => $appId, 'secret' => $secret )); if($facebook->getAccessToken()) { //getAccessTokenで無期限でアクセストークンが取得できます。 $access_token = $facebook->getAccessToken(); } else { //これはgetAccessTokenが動かなかった時の保険 $access_token = '【アクセストークン】'; } //$feeds変数にfeedの配列を入れます。 try {$feeds = $facebook->api('/' . $id . '/feed/', 'GET' , array('access_token' => $access_token,'limit' => 10)); } catch(FacebookApiException $e){ $fb_erro = '<p class="erro"> Facebookページは読み取り出来ませんでした。</p>'; } var_dump($feeds);
こんな感じでFacebookページのフィードを取得できます。
$feeds変数の’data’に各記事のデータが入るのですが、画像がサムネイル(sサイズ画像)の情報となります。
もっと大きい画像を持ってきたい場合は、少しコツがいります。
サムネイル画像はファイル名の最後に、’1029xxxx_s.jpg’の様に’_s’が付きます。
元の画像のファイル名は’1029xxxx_n.jpg’と’_n’になります。
そこで、ファイル名を’_s’から’_n’に文字変換をすると上手くいきます。
$fb_pict_reg = '/(.*)(_s)\.((jpg)?(png)?(gif))?/'; $replacement = '${1}_n.${3}'; $img_url =preg_replace($fb_pict_reg,$replacement,$fb_vl['picture']);
詳しい作り方などは、ケースバイケースで色々ためしてみてください。