SNS活用のヒント

catch-img

Facebookアプリを開発してみよう:OAuth版


前回の「Facebookアプリを開発してみよう」という記事では、開発時の設定においてFBMLを使用し、認証には$facebook->getSession()を使用しました。 しかし、Facebookは認証にはgetSession()よりもOAuthの利用を推奨しています。そこで今回はOAuthを利用して認証、およびユーザーの名前を引き出すコードを作成してみます。 なお、必要な条件、Webサーバ側のディレクトリ設定、Facebookアプリの登録までの手順については、「Facebookアプリを開発してみよう」を参照してください。


作成するプログラムを確認しよう

まず、今回紹介するコードでプログラムがどのように動作するのか確認してみましょう。アプリに接続すると、認証を行い結果として引き出したユーザーの名前を表示するというプログラムです。 こちらにアクセスしてください。 アクセスすると以下の画面のようにアプリの許可を求められますので、「許可する」をクリックします。

アプリの許可

 以下のように赤枠で囲った部分に自分の名前が表示されていれば正しく動作しています。

結果表示


プログラムの動作

この名前(ユーザー名)を引き出すには、以下のように3段階のステップで行っています。 ステップ1. ユーザーがログインしているか否かの確認 ステップ2. Facebook側からトークンを取得 ステップ3. トークンを使用して、graph APIから名前を取得 実際のコードは以下のようになります。

[code] <?php $app_id = 'アプリケーションID'; $app_secret = 'アプリの秘訣'; $my_url = 'Webサーバ側のURL'; // ステップ1.ユーザーがログインしているか否かの確認 $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>"); } // ステップ2.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); // ステップ3. トークンを使用して、graph APIから名前を取得 $graph_url = "https://graph.facebook.com/me?".$access_token; $user = json_decode(file_get_contents($graph_url)); echo $user->name; ?> [/code]

2行目から4行目までは適宜変更してください。 getSession()に比べると、やや複雑になっているように見えますが、実際の動きはシンプルなものです。 今後、getSession()での認証がdeprecateされる可能性がありますので、今のうちからOAuthでの作成を意識しておくといいかもしれません。

深谷歩
深谷歩