はじめまして。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インストール手順
まずは本体をダウンロードします。
1 |
curl -sS https://getcomposer.org/installer | php |
参考:http://crunchtimer.jp/blog/technology/php/4993/
(2)パッケージインストール
composer.jsonは以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
"repositories": [ { "type":"package", "package": { "name": "facebook", "version":"master", "source": { "url": "https://github.com/opauth/facebook.git", "type": "git", "reference":"master" } } package": { "name": "cakephp-opauth", "version":"master", "source": { "url": "https://github.com/uzyn/cakephp-opauth.git", "type": "git", "reference":"master" } } package": { "name": "opauth", "version":"master", "source": { "url": "https://github.com/opauth/github.git", "type": "git", "reference":"master" } } } ], "require": { "wouterj/behat": "*" }, |
(3)composerでインストール
1 |
php composer.phar install |
以上でインストール完了です。
ちなみに、Composerで管理する理由としましては、
– ライブラリのインストールが簡単
– ライブラリのバージョン、依存関係の管理が簡単
– 自分のGitに含めなくてすむ
が上げられます。
以上の2つのいずれかの方法でインストールしてください。
その後は、共通で↓となります。
2.cake phpでfacebook apiを利用するための設定
2.1.bootstrap.phpの変更
1 2 3 4 5 6 |
CakePlugin::load('Opauth', array('routes' => true, 'bootstrap' => true)); Configure::write('Opauth.Strategy.Facebook', array( 'key' => 'あなたのAPI key', 'secret' => 'あなたのAPI secret' )); |
keyとsecretには、facebookアプリで設定したものを使用してください。
※facebookアプリ登録方法 http://dev.classmethod.jp/etc/retrieve-json-from-facebook-api/
2.2.routes.phpの変更
1 2 3 4 |
Router::connect( '/opauth-complete/*', array('controller' => 'users', 'action' => 'opauthComplete') ); |
・opauthComplete.php へ処理を追記
1 2 3 |
public function opauthComplete() { debug($this->data); } |
以上で、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/