2012年1月30日 星期一

新版 PHP SDK 認證語法~(適用第 3-7章)

本書記載的認證方式已經有點過時了~建議大家可下載新版的SDK。

主要是取消了過去要透過SESSION 取得使用者資料,
而改為直接取得使用資料。

語法改變如下


require 'facebook.php';

//建立FACEBOOK SDK 物件
$facebook = new Facebook(array( 
'appId'  => '1111111',// 應用程式ID
'secret' => '1111111', // 應用程式密鑰
'cookie' => true,
));

//嘗試取得使用者ID
$uid = $facebook->getUser();

//設定跳回的應用程式網址
$redirectUrl = 'http://apps.facebook.com/helloworld_tw/ch7_d/';

//設定跳回的應用程式網址
$loginUrl = $facebook->getLoginUrl(
array('scope' => 'publish_stream',//新版的授權參數
'redirect_uri'=>$redirectUrl,//回傳網址
'canvas' => 1, 'fbconnect' => 0
));

//檢查是否存在使用者ID
if($uid) {
//有使用者ID,嘗試取得個人資料
try {
$me = $facebook->api('/me');
} catch (FacebookApiException $e) {

error_log($e);
$uid = null;
$me = null;
}
}else{
//沒有使用者ID,導引到登入頁面
echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
}

//已取得使用者資料,利用GRAPH API 存取使用者對應用程式的授權,
$permissions = $facebook->api("/me/permissions");

//檢查授權清單,以避免使用者缺乏蹶別授權項目
if(!array_key_exists('publish_stream', $permissions['data'][0]) ) {
//缺乏蹶別授權項目,,導引到登入頁面
echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
}


3 則留言:

  1. 作者您好,所以是修改ch3裡index.php的

    require....到";
    把這部分替換成上面嗎?
    上面有哪些地方需要更改

    回覆刪除
  2. 我是要用在CH3那邊,所以導回那邊改成
    $redirectUrl = 'http://apps.facebook.com/helloworld_tw/ch3/';
    還有哪裡需要改嗎,ID密碼那邊以外的,謝謝

    回覆刪除
  3. http://apps.facebook.com/helloworld_tw/ch3/ 要換成你自己指定的
    APP網址~其他就沒有要改了~

    回覆刪除