T-CREATOR

PHP(Codeigniter使用)からブログ投稿時にFacebookページへ自動投稿してみました。

PHP(Codeigniter使用)からブログ投稿時にFacebookページへ自動投稿してみました。
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

PHP(Codeigniter使用)からブログ投稿時にFacebookページへ自動投稿したのをメモしました。

Facebook開発者ページ

下記URLからFacebookの開発者ページへアクセスします。
※URLは変更になっている場合がございます。2014/2/1日時点のURL
https://developers.facebook.com/

Facebook開発者ページからアプリを作成

1.アプリから「新しいアプリの作成」をクリック

アプリから「新しいアプリの作成」をクリックします。 アプリから「新しいアプリの作成」をクリック

2.「Display Name」アプリの名前、「Namesspace」アプリのURLを入力、「カテゴリ」を選択

「Display Name」アプリの名前、「Namesspace」アプリのURLを入力、「カテゴリ」を選択し「アプリケーションを作成」をクリックします。 「Display Name」アプリの名前、「Namesspace」アプリのURLを入力、「カテゴリ」を選択

3.セキュリティチェックの文字を入力し「送信」をクリック

セキュリティチェックの文字を入力し「送信」をクリックします。 セキュリティチェックの文字を入力し「送信」をクリック

4.作成したFacebookアプリのダッシュボードから「アプリID」 「アプリのシークレットキー」をメモ

作成したFacebookアプリのダッシュボードから「アプリID」 「アプリのシークレットキー」をメモします。 作成したFacebookアプリのダッシュボードから「アプリID」 「アプリのシークレットキー」をメモ

5.サイドメニューから「設定」をクリックし「+Add Platform」をクリック

します。 サイドメニューから「設定」をクリックし「+Add Platform」をクリック

6.「ウェブサイト」をクリック

「ウェブサイト」をクリックします。 「ウェブサイト」をクリック

7.「サイトURL」を入力後「変更を保存」をクリック

「サイトURL」を入力後「変更を保存」をクリックします。 「サイトURL」を入力後「変更を保存」をクリック

以上でFacebookアプリの作成は終了です。 次は「facebook-php-sdk」をダウンロードします。

実装準備

facebook-php-sdkを設置

GitHubからfacebook-php-sdkをダウンロード

1.下記リンクへアクセスし「facebook-php-sdk」をダウンロードします。
※URLは変更になっている場合がございます。2014/2/1日時点のURL

https://github.com/facebook/facebook-php-sdk

GitHubからfacebook-php-sdkをダウンロード

2.ダウンロードした「facebook-php-sdk-master.zip」を解凍

ダウンロードしたfacebook-php-sdk-master.zipを解凍します。

3.ディレクトリのコピー

解凍してできたfacebook-php-sdk-masterファイルのなかの facebook-php-sdk-master/src/bace_facebook.php
facebook-php-sdk-master/src/facebook.php
facebook-php-sdk-master/src/fb_ca_chain_bundle.crt
ファイルを下記ディレクトリへコピーします。

css└── facebook-php-sdk-master
    └── src
        ├── bace_facebook.php
        ├── facebook.php
        └── fb_ca_chain_bundle.crt

下記application/librariesディレクトリはCodeIgniteのapplicationディレクトリです。

markdown└── application
    └── libraries
        └── facebook_sdk
            ├── bace_facebook.php
            ├── facebook.php
            └── fb_ca_chain_bundle.crt

Codeigniterへの記述

サンプルコードについて

サンプルコードは「Codeigniter」で簡易的なブログを作成していると想定し
「post.php」の「add」は記事を新しく投稿するページとします。

今回は投稿するデータをFacebookに自動反映するということで、
「Controller」に渡ってきたポストデータをそのままFacebookへ送る形を例とします。
記述箇所などは適宜変更してください。

先ほどメモしたFacebookの「アプリID」 「アプリのシークレットキー」
そして投稿する「Facebookページの」「FacebookページID」が必要です。

サンプルコード

application/controller/post.php<?php
    class Post extends CI_Controller {
        public function __construct() {
            parent::__construct();
            //モデルを読み込みます。
            //application/models/post_model.php
            $this->load->model('post_model');
        }
        public function add() {
            //ヴァリデーションは任意のものを設置してください。
            $this->load->library('form_validation');
            if ($this->form_validation->run() == FALSE){
                //サンプルview application/view/post_add.php
                $this->load->view('post_add');
            }else{
/* facebook投稿ここから */
                //先ほどメモしたFacebookの「アプリID」「アプリのシークレットキー」
                //用途によって記述箇所を変更してください。
                $facebook = array(
                    'appId' => 'アプリID',
                    'secret' => 'アプリのシークレットキー',
                );
                $facebook_page_id = 'フェイスブックページのID';
                $post_data = array(
                    'message' => 'このメッセージが投稿されます。',
                    'picture' => '画像のURL',
                    'link' => '画像リンク先のURL',
                    'name' => 'リンク名',
                    'caption' => '説明文',
                    'description' => '詳細文',
                    'access_token' => $page['access_token']
                );
                /*
                投稿からの情報を取得して配列に格納するサンプル
                $post = $this->input->post();
                $post_data = array(
                    'message' => $post['message'],
                    'picture' => $post['image'],
                    'link' => $post['link'],
                    'name' => $post['name'],
                    'caption' => $post['caption'],
                    'description' => $post['discription'],
                    'access_token' => $page['access_token']
                );
                */
                //先ほどダウンロードしたfacebook.phpを読み込みます。
                //application/libraries/facebook.php
                $this->load->library('facebook_sdk/facebook',$facebook);
                $user_id = $this->facebook->getUser();
                if($user_id != 0){
                    //ユーザーIDを取得出来たら投稿処理
                    try {
                        $pages = $this->facebook->api('/'.$user_id.'/accounts');
                            //自分が管理しているfacebookページから投稿するページを取得
                            foreach ($pages['data'] as $page) {
                            if($page['id'] == $facebook_page_id) {
                                $page_id = $page['id'];
                                $post_data['access_token'] = $page['access_token']
                                $result = $this->facebook->api('/'.$page_id.'/feed', 'post', $post_data);
                            }
                        }
                    } catch (FacebookApiException $e) {
                        throw new Exception($e);
                    }
                }else{
                    //ユーザーIDを取得出来なかったら認証処理
                    if(!empty($_GET['error_code'])){
                        echo 'facebook認証エラー';
                        exit;
                    }elseif(!$user_id){
                        $params = array(
                            'display' => 'popup',
                            'redirect_uri' => "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"],
                            'scope' => 'publish_stream,manage_pages',
                        );
                        $fb_login_url = $this->facebook->getLoginUrl($params);
                        header("Location: " . $fb_login_url);
                        exit;
                    }
                }
/* facebook投稿ここまで */
                //サンプルmodel モデルの関数を実行します。
                $this->Post_model->insert_post($this->input->post());
                //サンプルview application/view/post_success.php
                $this->load->view('post_success');
            }
        }
    }

コメントの/* facebook投稿ここから */から /* facebook投稿ここまで */が実際の処理になります。
今回は「Controller」に記述していますが用途に合わせて変更してください。

一度アプリの認証をしてから、投稿すると「Facebookページ」に投稿が反映されます。

最後にFacebookアプリの管理ページから
「★ Status & Review」タブをクリックし「はい」へ変更すると投稿が一般公開されます。

「★ Status & Review」タブをクリックし「はい」へ変更すると投稿が一般公開さ

今回は「Facebookページ」の記事についてでしたので
「Codeigniter」にはあまり触れていませんが今後、「Codeigniter」の記事を書いていきたいと思います。

記事Article

もっと見る