最近のWebアプリではよく付いていますよね、TwitterとかFacebookのアカウントでログイン出来る処理。必要になったので、ちょっと実装方法などをメモしておく。
最初っからスクラッチで作りこもうかと思ったけど、面倒かつ車輪の再発明なのでそんなことはしない。Packagistを探したらあった。
今回使うのはhybridauthというライブラリです。Twitter,Facebookの他にもGoogleとかGithubのアカウントを使ってログインできるみたいです。
HybridAuth, Open Source Social Sign On PHP Library
Composerのインストール方法を記述しようかと思ったら、テストで使おうとしたさくらインターネットのスタンダートプランはPHP5.2 orz 5.2系も陳腐化している辺りに年月の速さの恐ろしさを感じます。そもそもスタンダートプランだとcurlがまともに機能しないっぽ。。さっさとVPSプランに変えろということか。。
さて、Composerでhybridauthをインストール前提で書いておく。面倒だからソースを書いておくだけに留める。ドキュメントも全部熟読しているとは言いがたいし、簡単に使えるんだなというフレーバーだけでも理解してもらえると幸いです。
<?php require_once dirname(__FILE__) .'/../composer/vendor/autoload.php'; class SocialLoginWrapper { public $hybridauth; public $auth_library_path = ''; public function __construct() { $this->auth_library_path = 'http://'. $_SERVER['SERVER_NAME'] .'/socialLoginTest/composer/vendor/hybridauth/hybridauth/hybridauth/'; $paramArray = $this->getSocialLoginParamArray(); $this->hybridauth = new Hybrid_Auth($paramArray); } public function getSocialLoginParamArray() { $paramArray = array( "base_url" => $this->auth_library_path, "providers" => array ( //'key' is your twitter application consumer key "Twitter" => array ( "enabled" => true, "keys" => array ( "key" => "twitter_auth_id", "secret" => "twitter_auth_key" ) ), "Facebook" => array ( // 'id' is your facebook application id "enabled" => true, "keys" => array ( "id" => "facebook_auth_id", "secret" => "facebook_auth_key" ), "scope" => "email, user_about_me, user_birthday, user_hometown" // optional ) ) ); return $paramArray; } public function getSocialLoginObj() { return $this->hybridauth; } } $socialObj = new SocialLoginWrapper(); $loginObj = $socialObj->getSocialLoginObj(); // twitterの場合 $twitter = $loginObj->authenticate('Twitter'); // ログイン処理 $twitter_user_profile = $twitter->getUserProfile(); $account_settings = $twitter->api()->get('account/settings.json'); print_r($twitter); print_r($twitter_user_profile); print_r($account_settings); $twitter->logout(); // ログアウト // facebookの場合 $facebook = $loginObj->authenticate('Facebook'); // ログイン処理 print_r($facebook); $facebook->logout(); // ログアウト
twitter_auth_id、twitter_auth_key、facebook_auth_id、facebook_auth_keyは適時置き換えてください。下記で取得できます。twitterの場合はパーミッションはread,writeです。
twitterのディベロッパーページ
Twitter Application Management
facebookのディベロッパーページ
Facebook開発者 - 開発者向けFacebook
いやー、疲れてますね。流石5月の力。ゴールデンウィークヤバイですわ。シンドいですが頑張ろう。
Twitter API ポケットリファレンス (POCKET REFERENCE)
- 作者: 山本 裕介
- 出版社/メーカー: 技術評論社
- 発売日: 2011/07/15
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 247回
- この商品を含むブログ (43件) を見る
10日でおぼえるFacebookアプリ開発入門教室 (10日でおぼえるシリーズ)
- 作者: 多田智史,岩崎雅也
- 出版社/メーカー: 翔泳社
- 発売日: 2012/04/20
- メディア: 大型本
- クリック: 8回
- この商品を含むブログを見る