PHP facebookのOAuth処理

今回はfacebookのOAuth処理をメモしておきます。あ、PHPね。

1. facebookにアプリの登録をする

facebookにログインした状態でこちらにアクセスします。
あ、あらかじめ携帯メールかクレジット番号の登録をしておくとよいです。
登録してなくてもあとから設定するように促されるけど。

http://www.facebook.com/developers/

以下の画面が表示されるので「許可する」をクリックします。


遷移した画面で「Create one.」をクリックします。


アプリケーション名の入力を求められるので、任意のアプリケーション名を入力し、規約に「同意」にチェックして、「アプリケーションを作成」をクリックします。


セキュリティチェックの画像が表示されるので、文字列を入力して人間であることを証明してください。


アプリケーションの設定画面が表示されます。

ここではデフォルトで「アプリケーション名」、「ユーザーサポートのアドレス」、「Contact Email」が設定されてます。
必要なら内容を変更しましょう。

次は左側のリンクから「Facebook Integration」をクリックします。


するとこんな画面に遷移します。

ひとまず「アプリケーションID」と「Application Secret」の内容をメモっときましょう。アプリ作るときに必要になります。
つづいて以下の項目を入力します。
  • Canvas Page
  • facebook上のURLとなる任意の文字列を入力します。
  • Canvas URL
  • 認証の際に呼び出されるCallbackのURLを入力します。スラッシュ(/)で終わらないとダメみたいです。
  • Canvas Type
  • とりあえず「FBML」にチェック入れておきます。
これでfacebook側の設定はひとまず終わりです。「変更を保存」をクリックします。

2. facebookのライブラリをダウンロード

facebookの設定を終えると「マイアプリ」というページに遷移します。そのページの下のほうに「クライアントライブラリをダウンロード」というリンクがあるのでこれをクリックします。

するとダウンロードのページに遷移するので「Downloads」をクリックしてダウンロードしてください。
ダウンロードしたファイルを解凍すると「src」というディレクトリがあります。この中の「facebook.php」と「fb_ca_chain_bundle.crt」を使用します。
サーバの任意の場所にアップします。

3. サンプルコード

<?php
$app_id     = '1.で取得したアプリケーションID';
$app_secret = '1.で取得したApplication Secret';
$cb_url     = 'CallbackのURL';

// ログイン状態の確認
$code = $_REQUEST["code"];
    if(empty($code)) {
        $dialog_url = "http://www.facebook.com/dialog/oauth?client_id="
            . $app_id . "&redirect_uri=" . urlencode($my_url);
        echo("<script> top.location.href='" . $dialog_url . "'</script>");
    }

// Facebook側からトークンを取得
$token_url = "https://graph.facebook.com/oauth/access_token?client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url) . "&client_secret=" . $app_secret . "&code=" . $code;
$access_token = file_get_contents($token_url);

// トークンを使用して、graph APIから名前を取得
$graph_url = "https://graph.facebook.com/me?".$access_token;
$user = json_decode(file_get_contents($graph_url));
echo $user->name;
?>
上記のコードをindex.phpの名前で保存してサーバ上の「Canvas URL」で設定した場所にアップします。

4. 呼び出してみよう

実際に先ほどのサンプルコードを呼び出してfacebookのOAuth認証を行ってみます。
以下のURLを自分のアプリケーションIDとキャンパスページURLに書き換えてアクセスしてください。
https://www.facebook.com/dialog/oauth?client_id=アプリケーションID&redirect_uri=キャンバスページ
アプリの許可のページで「許可する」をクリックして、遷移したfacebookページにfacebookの名前が表示されていれば成功です。

さくらのVPSでやったら「Warning: file_get_contents() [function.file-get-contents]: SSL: fatal protocol error in sample.php」ってワーニングが表示されたけど、なんだろ。名前は表示されたのでOAuthには成功した模様です。この原因はおいおい調査するとして。。。

ということで、facebookのライブラリを使うと簡単にOAuth認証できちゃうんですね。

今回は以下のサイトを参考にさせていただきました。
ありがとうございましたー。