Facebook API Sample

Facebook API 使用範例 (PHP ver.)

FB API PHP 版 使用範例流程,以下將以原始碼方式展示 PHP 執行片段.
同場加映:Facebook API 使用範例 (Javascript ver.),Facebook API 使用範例 (Android ver.)

SESSION 資料

(clear)
array(0) {
}

Step 1. 預先配置

請先至 developer 下載 php 版 sdk

程式碼片段

<?php
include path/to/php-sdk/facebook.php; // 引用 sdk lib
$config = array(
  'appId' => $app_id,  // app id
  'secret' => $app_secret, // app secret
  'fileUpload' => false, // 是否可以透過 app 上傳檔案(EX. 頭像,圖片... etc)
  'allowSignedRequest' => false, // 非 canvas 的 app 設定 false
);
$facebook = new Facebook($config);
$fbUserID = $facebook->getUser();   // 取得使用者ID
?>

這部分用于定義網站該取用哪個 APP 的資訊以供未來使用,app id 及 secret 請前往 Developer 自行註冊
或者可參考 教學 Step by Step 申請。


Step 2. 確認授權

點此授權 Facebook 權限

程式碼片段

<?php
if($fbUserID) {
  // 當可取得資料(有登入)
  try {
    echo "Facebook APP 已被授權並登入。<br />";
    echo "您的使用者 ID 為 ".$fbUserID."<br />";

    $fb_logout_url = $facebook->getLogoutUrl();       
    echo <<< fb
      <ul>
        <li><a href="{$fb_login_url}">點此登出 Facebook (連同 Facebook 一起登出)</a></li>
        <li><a href="?act=logout">從本頁登出(非取消授權)</a></li>
      </ul>
fb;
  } catch(Exception $fbE) {
    echo <<< fb
      <span>Facebook 程序發生錯誤。</span>
fb;
  }
} else {
  $fb_login_url = $facebook->getLoginUrl();
  echo <<< fb
    <a href="{$fb_login_url}">點此授權 Facebook 權限</a>
fb;
}
?>

此部分程式碼為基本確認使用者是否曾經授權本 app 取用資訊
透過 getUser() 可以取得使用者的 user id (若帶到 facebook.com/{id} 可以連到個人頁面)
登出時則是呼叫 $facebook->destroySession(); 即可從 app 登出

註記:在授權成功後 Facebook 會導回送過去的頁面,但是在測試時遇到一個問題
當我一取到狀態(code=xxxx&status=xxx)立刻重導原頁面消除 Get 參數時
Facebook 居然取不到資料,因此我直接將 getUser() 放在 new Facebook 底下提早判斷就正常了。


Step 3. 取得基本資料

尚未授權及登入登入無法取得資料

程式碼片段

<?php
      if($fbUserID) {
        // 假如有登入才能取
        $profile = $facebook->api("/me","GET");
        $prof_data = var_export($profile,true);
        echo <<< prof
        <pre>{$prof_data}</pre>
prof;
      } else {
        echo "尚未授權及登入登入無法取得資料";
      }
?>

Facebook->api 的方法跟 Javascript 差不多,都是用于呼叫 Graph API 的 Function
透過 Graph API 可以使用 Facebook用戶 的權限來動作,如最後一步的取消授權...


Step 4. 取消授權

程式碼片段

<?php
  $facebook->api("/me/permissions","DELETE");
?>

取消 facebook 的授權方式跟 Javascript 方法一樣,但是在 PHP 的部分遇到了狀況,
當我 delete permission 後第一次轉回頁面時,前半部讀取會員資訊是正常的(session 還在)
但是後半段卻造成 PHP 中斷了,原因不知,需等第二次 refresh 後才正常
(估計跟其程式邏輯有關... 待確認)

以上就是 Facebook API PHP 版本最基本的語法使用,之後有空補上一些其他相關方法
@auther - Kerash

同樣開個留言板...