Friday, October 23, 2009

Facebook API - 簡易Facebook App 朋友牆

先來實做一個簡單的範例, 一個極為簡單的Facebook App, 其唯一的功能只有列出User所有朋友的頭圖, 當然前提是User已經完成對App的授權(Allow)之後.

  • Step1 建立一個新的應用程式

    Facebook - Developers_1256290709899 

    輸入應用程式的名稱, 並且要將"Agree"點選起來

    Facebook - Create Application_1256290985380 

    點選"Create Application"之後, 你會被導向如下圖所示的頁面

    Facebook - Edit Demo App - 6yeah_001_1256291102156

    本頁面有三個非常重要的資訊, 其中API Key與Secret都是要用在API中的重要資訊

    Facebook - Edit 6yeah Friends List App Demo_1256291516650 

    接下來點選"Canvas"頁籤, 在這裡有三個設定非常重要

    • Canvas Page URL


      這裡設定的就是以後User連結到你的App的URL, 以本範例而言, 我們在輸入框中填入sixyeah_demo_a, 一但送出之後, 以後User只要輸入http://apps.facebook.com/sixyeah_demo_a就會連結到你App的Canvas Page了.

    • Canvas Callback URL


      這裡所設定的URL就是指向放置該App的應用程式主機, 以本範例來說, App是Hosting在www.6yeah.com 這台主機上面, 設定值為"http://www.6yeah.com/fb_apps/friends_list/my_friends_list.php"

    • Render Method


      我們選用FBML

      如此一來我們已經完成了一個App所有必要的設定了

  • 下載PHP Client Libraries
  • PHP與FBML程式碼

    <?php
    require_once('./facebook-platform/php/facebook.php');
    require_once('./facebook-platform/php/facebookapi_php5_restlib.php');

    $appapikey = '{API Ley}';
    $appsecret = '{APP Secret}';
    $facebook = new Facebook($appapikey, $appsecret);

    $user = $facebook->require_login();

    $friend_uids = explode(',',$_POST['fb_sig_friends']);
    ?>
    <div style="border:solid 2px gray;padding:5px;float:left;clear:both;">

    <?php
    foreach ( $friend_uids as $uid ){
    ?>
    <div style="float:left;margin:5px;">
    <fb:profile-pic uid="<?php echo $uid; ?>" linked="true" size="square"/>
    </div>
    <?php
    }
    ?>
    </div>

    結果會如下圖所示 進入Demo頁面

    6yeah Friends List App Demo on Facebook_1256292431891

2 comments:

  1. 站主你好,看你的Blog受益良多,我現在用 IFRAME 加了個 add to profile 到網頁

    語法是
    FB.Integration.showAddSectionButton("profile", document.getElementById("div id"));

    這樣子它制式的add to profile 會出現在這個 div 中

    然後點那個按鈕就會出現加入個人檔案的訊息(加入的資料在前面用php變數代入)

    我現在有幾個問題想請教一下

    1.有辦法改這個 add to profile 的圖嗎
    2.用FBML方式呼叫add to profile 很簡單,出現也是中文,但用IFRAME我這種方式呼叫出現只有英文,可以改語系變成「加入個人檔案」嗎
    ****(第三個問題我比較想知道)***
    3.有辦法知道這個人是否已經加入到個人檔案了嗎 ... 因為在版面上,Facebook會自動判斷是否有加入,未加入才會顯示出那個按鈕,那我在版面設定想要寫說若已加入個人檔案,秀張圖說你已加入這樣。
    因為知道Facebook能判斷是否已加入,所以想知道這個判斷該怎麼接到~

    不好意思問了這麼多問題,若你有空的話請提示一點,或請給個方法讓小弟去找,感謝啦 !

    ReplyDelete
  2. 猴爺,
    你好.

    請問如何只利用 API 取得使用者的profile pic?
    是否需先取得使用者的授權才可取得profile pic?

    謝謝..^_^..

    MC
    (mrcheunghk@gmail.com)

    ReplyDelete