Php/HybridAuth
提供: 初心者エンジニアの簡易メモ
twitterやfacebookの認証のマッパーライブラリ
目次
ダウンロード
http://hybridauth.sourceforge.net/userguide.html
サンプルコード(twitter
https://dev.twitter.com/apps/でread&writeにする
<?php session_start(); $config = dirname(__FILE__) . '/hybridauth/config.php'; require_once(dirname(__FILE__) . '/hybridauth/Hybrid/Auth.php'); // create an instance for Hybridauth with the configuration file path as parameter $hybridauth = new Hybrid_Auth($config); $adapter = $hybridauth->authenticate("Twitter"); $user_profile = $adapter->getUserProfile(); echo "Ohai there! U are connected with: <b>{$adapter->id}</b><br />"; echo "As: <b>{$user_profile->displayName}</b><br />"; echo "And your provider user identifier is: <b>{$user_profile->identifier}</b><br />"; print_r($user_profile); $adapter->logout();
ユーザデータ
すべてのプロバイダーで、マッピングされたユーザデータが取得できる
$user_profile = array( [identifier] => 219000000 [webSiteURL] => [profileURL] => http://twitter.com/hogehoge [photoURL] => http://a3.twimg.com/profile_images/1271919150/hogehoge_normal.png [displayName] => hogehge [description] => hogehoge [firstName] => hoge [lastName] => [gender] => male [language] => [age] => [birthDay] => 01 [birthMonth] => 01 [birthYear] => 1981 [email] => hogehoge@gmail.com [phone] => [address] => [country] => [region] => [city] => [zip] => )
ユーザ認証テーブル
CREATE TABLE `authentications` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL COMMENT 'refer to users.id', `provider` varchar(100) NOT NULL, `provider_uid` varchar(255) NOT NULL, `email` varchar(200), `display_name` varchar(150) NOT NULL, `first_name` varchar(100), `last_name` varchar(100), `profile_url` varchar(300), `website_url` varchar(300), `created` datetime NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `provider_uid` (`provider_uid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ユーザテーブルL
CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `email` varchar(200) NOT NULL, `password` varchar(200) NOT NULL, `first_name` varchar(200) NOT NULL, `last_name` varchar(200) NOT NULL, `created_at` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
getUserProfileとtableの対応
$provider_uid = $user_profile->identifier; $email = $user_profile->email; $first_name = $user_profile->firstName; $last_name = $user_profile->lastName; $display_name = $user_profile->displayName; $website_url = $user_profile->webSiteURL; $profile_url = $user_profile->profileURL;
その他
- https://developers.facebook.com/appsからkeyとsecret取得
- 設定/編集/websiteにアクセス元ドメインを入れないと,"Error Message: Invalid redirect_uri: 指定されたURLは、アプリケーションの設定で許可されていません。"エラーが出る
<?php $config = dirname(__FILE__) . '/hybridauth/config.php'; require_once("hybridauth/Hybrid/Auth.php"); $hybridAuth = new Hybrid_Auth($config); $adapter = $hybridAuth->authenticate("Facebook"); $user_profile = $adapter->getUserProfile(); print_r($user_profile); $adapter->logout();
参照
- TwitterやFacebookへのログイン機能をこれ1個で実装できるPHPライブラリ「HybridAuth」
http://phpspot.org/blog/archives/2011/08/twitterfacebook_3.html
YahooJapanを追加
- yahootest.php
<?php $config = dirname(__FILE__) . '/hybridauth/config.php'; require_once("hybridauth/Hybrid/Auth.php"); $hybridauth = new Hybrid_Auth($config); $adapter = $hybridauth->authenticate("YahooJapan"); $user_profile = $adapter->getUserProfile(); print_r($user_profile); $adapter->logout();
- hybridauth/Hybrid/Providers/YahooJapan.php
<?php class Hybrid_Providers_YahooJapan extends Hybrid_Provider_Model_OpenID { var $openidIdentifier = "yahoo.co.jp"; }
- hybridauth/config.php
return array( "providers" => array ( "YahooJapan" => array ( "enabled" => true ), ), );
Mixiを追加
- mixitest.php
<?php $config = dirname(__FILE__) . '/hybridauth/config.php'; require_once("hybridauth/Hybrid/Auth.php"); $hybridAuth = new Hybrid_Auth($config); $adapter = $hybridAuth->authenticate("Mixi"); $user_profile = $adapter->getUserProfile(); print_r($user_profile); $adapter->logout();
- hybridauth/Hybrid/Providers/Mixi.php
<?php class Hybrid_Providers_Mixi extends Hybrid_Provider_Model_OpenID { var $openidIdentifier = "https://mixi.jp"; }
- hybridauth/config.php
return array( "providers" => array ( "Mixi" => array ( "enabled" => true ), ), );
Livedoorを追加
- livedoortest.php
<?php $config = dirname(__FILE__) . '/hybridauth/config.php'; require_once("hybridauth/Hybrid/Auth.php"); $hybridAuth = new Hybrid_Auth($config); $adapter = $hybridAuth->authenticate("Livedoor"); $user_profile = $adapter->getUserProfile(); print_r($user_profile); $adapter->logout();
- hybridauth/Hybrid/Providers/Livedoor.php
<?php class Hybrid_Providers_Livedoor extends Hybrid_Provider_Model_OpenID { var $openidIdentifier = "http://livedoor.com"; }
- hybridauth/config.php
return array( "providers" => array ( "Livedoor" => array ( "enabled" => true ), ), );