ええやんブログ

ええやないかのええやんブログ

Facebook SDK for PHPを使ったFacebookアプリのつくりかた

みなさんお元気ですか?僕は元気です。

さて、PHPFacebookアプリをつくろうとしたのですが、いざ検索すると古い情報がまぎれていてよーわからん!となったので、自分の情報をさらに混ぜていこうと思います。ふふふ。

1. Facebookアプリを登録する

まずはFacebook開発者向けサイトに登録します。
なお、登録にはアカウント認証が必要です。

次にAppsにある「新しいアプリを作成する」ボタンよりアプリを登録します。
App Nameだけ入力すればOKです。

2. Facebookアプリの設定を行う

アプリを登録すると基本設定が表示されるはずですので、基本設定を登録していきます。
まずは下記の設定さえすれば大丈夫だと思います(モバイルはまた今度説明します)。
- Namespace:アプリ名(eeyan_shindanとか)
- Sandbox Mode:有効
- Facebook上のアプリ
 キャンバスURL:FacebookからアクセスされるURL
http://example.com/shindan/index.phpとか)
 セキュリティで保護されたキャンバスのURL:FacebookからアクセスされるSSLのURL
https://example.com/shindan/index.phpとか)

キャンバスURLを設定すると、キャンバスページのURLが発行されます。
http://apps.facebook.com/[Namespaceで設定した文字列]
アプリ完成時には、このページにアクセスすることになります。

ちなみにSandbox Modeを有効にすると、テスト出来るユーザーを絞り込むことができます。 テストユーザーは左側にある「開発者の役割」のテスト担当者から追加できます。

Facebookでの設定はこれくらいです。

3. Facebook謹製のPHP SDKをダウンロード

Facebook PHP SDKのgithubからSDKのファイルをダウンロードします。
githubのページにあるZIPボタンをクリックするとソースがダウンロードできます。

4. キャンバスページ側を作成する

ダウンロードしたSDKの中にあるsrcというフォルダが実際に使用するファイルなのですが、同じ場所にあるexamplesがちょうどいいサンプルになります。
下のコードです。

<?php
require '../src/facebook.php';

// アプリのインスタンスを作成(appIdとsecretは適宜置き換えてね)
$facebook = new Facebook(array(
        'appId'  => '344617158898614',
        'secret' => '6dc8ac871858b34798bc2488200e503d',
));

// User IDを取得
$user = $facebook->getUser();

// User IDがあればFacebookにログインしているとみなす
if ($user) {
    try {
        // ログインしているユーザーのユーザー情報を取得
        $user_profile = $facebook->api('/me');
    } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
    }
}

// 現在のログイン状況にしたがい、ログインURLもしくはログアウトURLを取得
if ($user) {
    $logoutUrl = $facebook->getLogoutUrl();
} else {
    $loginUrl = $facebook->getLoginUrl();
}

// たとえばNaitik Shahさんの公開データはこうやって取得します
$naitik = $facebook->api('/naitik');

?>
<!doctype html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<title>php-sdk</title>
<style>
body {
    font-family: 'Lucida Grande', Verdana, Arial, sans-serif;
}

h1 a {
    text-decoration: none;
    color: #3b5998;
}

h1 a:hover {
    text-decoration: underline;
}
</style>
</head>
<body>
    <h1>php-sdk</h1>

    <?php if ($user): ?>
        <a href="<?php echo $logoutUrl; ?>">ログアウト</a>
    <?php else: ?>
    <div>
        <a href="<?php echo $loginUrl; ?>">Facebookにログイン</a>
    </div>
    <?php endif ?>

    <h3>PHP セッション</h3>
    <pre>
        <?php print_r($_SESSION); ?>
    </pre>

    <?php if ($user): ?>
    <h3>あなたの情報</h3>
    <img src="https://graph.facebook.com/<?php echo $user; ?>/picture">

    <h3>あなたのUser Object(/me)</h3>
    <pre>
        <?php print_r($user_profile); ?>
    </pre>
    <?php else: ?>
    <strong><em>ログインしていません</em> </strong>
    <?php endif ?>

    <h3>Naitik公開プロフィール</h3>
    <img src="https://graph.facebook.com/naitik/picture">
    <?php echo $naitik['name']; ?>
</body>
</html>

このコードとsrcのフォルダをキャンバスURLで指定したパスに配置してください。
あと、appIdとsecretは作成したアプリのものにしておいてください。
キャンバス上で表示されるPHPはこれで完了です。

キャンバスページのURLにアクセスして、ログイン画面が表示されればOKです。

ただこのままだとMVCもなにもないなーという状態なので、次からはCodeIngniterに乗っけていきます。