スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

YiiフレームワークにFacebookSDKを組み込む

追記(2011/07/04)
actionLogoutでurlを作ってからセッションをクリアーするようにした。
この順で呼ばないとFacebookからログアウトされない。

1. アプリケーションを作成する
yiic webapp fbapp
cd fbapp

2. FacebookSDKを配置する
mkdir -p protected/vendors/facebook
作成したディレクトリにphp-sdkでダウンロードしたファイルを解凍してsrcにあるファイル
base_facebook.php
facebook.php
fb_ca_chain_bundle.crt
を保存する。

3. FacebookSDKを設定する
パスの設定
vi protected/config/main.php
'import'=>array(
'application.models.*',
'application.components.*',
'application.vendors.*',
),


アプリケーションの設定
vi protected/config/main.php
'params'=>array(
// this is used in contact page
'adminEmail'=>'webmaster@example.com',
'fb_app_id'=>'your facebook app id',
'fb_secret'=>'your facebook secret',
'fb_scope'=>'status_update,publish_stream',
),


4. Facebook SDKカスタマイズ
ログアウト時にセッションクリアーするためメソッド追加
protected/vendors/facebook/facebook.php
public function clearAllSession() {
$this->clearAllPersistentData();
}


5. コントローラー作成
vi protected/controllers/FacebookController.php
<?php
require_once('facebook/facebook.php');

class FacebookController extends Controller
{
public $facebook;

public function init() {
parent::init();
$this->
facebook = new Facebook(array(
'appId' => Yii::app()->params['fb_app_id'],
'secret' => Yii::app()->params['fb_secret'],
'cookie' => true,
));
}

public function actionIndex()
{
$user = $this->facebook->getUser();
if (0 === $user) {
$loginUrl = $this->facebook->getLoginUrl(array(
'scope' => Yii::app()->params['fb_scope']
));
$this->render('index', array('url' => $loginUrl));
} else {
$me = $this->facebook->api('/me');
$this->render('me', array('me' => $me));
}
}

function getApplicationUrl()
{
return (preg_match('/^HTTPS/i', $_SERVER['SERVER_PROTOCOL']) ? 'https' : 'http')
. '://'
. $_SERVER['HTTP_HOST']
;
}

function bu($url=null)
{
static $baseUrl;
if ($baseUrl===null)
$baseUrl=$this->getApplicationUrl();
return $url===null ? $baseUrl : $baseUrl.'/'.ltrim($url,'/');
}


public function actionLogout()
{
$next = $this->bu(Yii::app()->createUrl('facebook/index'));
$url = $this->facebook->getLogoutUrl(array('next' => $next));
$this->facebook->clearAllSession();
$this->redirect($url);
}
}


6. ビューの作成
vi protected/views/facebook/index.php
<a href="<?php echo $url; ?>"">Facebookログイン</a>


vi protected/views/facebook/me.php
<?php echo $me["name"]; ?>
<br/>
<a href="<?php echo Yii::app()->"createUrl('facebook/logout'); ?>">ログアウト</a>


7. ブラウザで確認
index.php?r=facebook/index
スポンサーサイト
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。