Facebookの公式apiを使って、ユーザーのメールアドレスを取得する方法

はじめまして。GMOモバイルのD.Nです。
今回は、facebookでユーザーのメールアドレスを公式apiを使い取得する方法をご紹介します。

今回は、facebook公式apiをphp(cakephp)で使う前提で説明させていただきます。

1.facebook apiプラグインのインストール

a.Composerを利用しない場合

・cakephp-opauth https://github.com/uzyn/cakephp-opauth
⇒ ダウンロード後、フォルダを「Opauth」というファイル名に変更して 「app/Plugin/」に設置

・Facebook Stratefy https://github.com/opauth/facebook
⇒ ダウンロード後、フォルダを「Facebook」というファイル名に変更して、「Opauth」の中にある「Strategy」というフォルダに設置

・opauth本体 http://opauth.org/
⇒ ダウンロード後、解凍したファイルを「Opauth」変更して、「app/Plugin/Opauth/Vendor」に設置

(ブログ掲載のプログラムのインストールは、自己責任で御願いします。インストール等の結果にかかるハードウェアの不稼働等は、 当ブログでは一切サポートしておりませんので、予め御了承下さい。)

ということでしたが、先輩からComposerで管理すべきとご指摘をいただきましたので、
Composerでの導入方法についても説明させていただきます。

b.Composerを使用する場合

(1)Composerインストール手順

まずは本体をダウンロードします。

参考:http://crunchtimer.jp/blog/technology/php/4993/

(2)パッケージインストール

composer.jsonは以下のようになります。

(3)composerでインストール

以上でインストール完了です。

ちなみに、Composerで管理する理由としましては、

– ライブラリのインストールが簡単
– ライブラリのバージョン、依存関係の管理が簡単
– 自分のGitに含めなくてすむ

が上げられます。

以上の2つのいずれかの方法でインストールしてください。
その後は、共通で↓となります。

2.cake phpでfacebook apiを利用するための設定

2.1.bootstrap.phpの変更

keyとsecretには、facebookアプリで設定したものを使用してください。
※facebookアプリ登録方法 http://dev.classmethod.jp/etc/retrieve-json-from-facebook-api/

2.2.routes.phpの変更

・opauthComplete.php へ処理を追記

以上で、http://localhost/プロジェクト名/auth/facebookでユーザー情報が収得できます。
こちらにデータが送られてきますので、取得したメールアドレスをdbに保存するなどの処理を記載します。

※引用元: Cakephp2.Opauthプラグインを使ってTwitterログイン http://orekaihatsulog.hateblo.jp/entry/2014/03/20/232733

3.まとめ

今は、禁止されてしまいましたが、「続きを読みたい方は、いいねを押して下さい」と誘導をして、メールアドレスを取得する方法もありました。
しかし、今でも「いいね」したユーザーにメールアドレスの登録を促す誘導をfacebook側でかけたりもできるので、まだまだ利用価値はあると思います。

なお、facebookは利用規約がこまめに変わるので利用シーンについては、利用規約で確認をしてください。
利用規約 https://developers.facebook.com/policy/Japanese/