2009年10月10日 星期六

Facebook API Example - 客製化 Quiz 測驗教學筆記

雖然已經有一些制式的製作方式:



等等的,皆可以透過 Quiz 關鍵字在 Facebook 查詢到許多跟測驗相關的應用。大部分是已經製作好流程的,只要填寫一下問題、結果,就可以很快地完成一張測驗表。然而,有時候要推服務時,可能會用到許多 Javascript API ,往往那些 Quiz 製造機只適合用來填寫文字跟圖片,這時候就還是得靠人工方式了!沒錯,就是要寫程式!此例以 PHP 跟 Javascript 為範例實作。


製作一個 Quiz 的流程,主要可以分成四部份:



  1. 顯示問題及收集答案

  2. 顯示結果前,詢問是否要邀請朋友參與

  3. 顯示結果和留言

  4. 將結果發佈至塗鴉牆


整體上可以簡化到兩步,就是顯示問題收集答案跟顯示結果,但這樣會使得最後一頁要做的事很多,我做了一兩個制式的測試,發現還有每一個問題就要換一個頁面,這種理由多半是要顯示廣告用的,使得每到一頁就多了一次廣告流量。我覺得分成四部份應該還滿恰當的,再細分下去有點不妥,除非是介面的設計或是問題太多。


在實作上,依上述分類可以分成 3 個頁面,第一個頁面負責顯示問題跟收集答案;第二個頁面則是提供使用者便利地點選朋友寄送邀請函;第三個就是顯示結果,以及留言的顯示,至於第四部分則可在第三頁搭配 Javascript 來提供發送,故可以少一個頁面。


流程:



  1. 新增與設定 App



  2. 顯示問題及收集答案

    • 一般的 HTML Code



  3. 顯示邀請朋友參加的介面

    • FBML 版

      • <fb:fbml>
                <fb:request-form action="?status=2" method="POST" invite="true" type="MyAppName" content="快來挑戰!<?php echo htmlentities("<fb:req-choice url=\"http://apps.facebook.com/my_app_name/\" label=\"Authorize My Application\"") ?>"
                        <fb:multi-friend-selector showborder="false" actiontext="邀請朋友參加此測試">
                </fb:request-form>
        </fb:fbml>



    • Iframe 版


      • <fb:serverfbml style="width: 100%;">
            <script type="text/fbml">
                <fb:fbml>
                    <fb:request-form action="?status=2" method="POST" invite="true" type="XFBML" content="快來挑戰!<?php echo htmlentities("<fb:req-choice url=\"http://apps.facebook.com/my_app_name/\" label=\"Authorize My Application\"") ?>"

                        <fb:multi-friend-selector showborder="false" actiontext="邀請朋友參加此測試">
                    </fb:request-form>
                </fb:fbml>
            </script>
        </fb:serverfbml>





  4. 顯示結果後,提供 Post 到個人塗鴉牆(採用舊式申請 template 的方式,facebook 已打算在 2009/12/20 停用此功能,此例先保留給舊式範例,新式用法歡迎參考:發佈到個人塗鴉牆的樣版設定教學)


    • FBML

      • <script type="text/javascript">
        var template_id = number_id;
        var user_message_prompt = 'What do you think of this book?';
        var user_message = {value: 'write your review here'};

        var template_data={
                'test_name':'Taipei' ,
                'test_result':'OK',
               
        'images':[{'src':'http://pad.thedigitalmovement.com/_blaise/2007-06-15-dgen-breakfast.jpg',
        'href':'http://tw.yahoo.com/'}]
        }
        var body_general='';
        var target_ids = '';

        var continuation = function() {
                // do something
        };
        Facebook.showFeedDialog( template_id, template_data, body_general, target_ids , continuation, user_message_prompt, user_message );
        </script>


      Iframe

      • <script type="text/javascript">
        FB_RequireFeatures(["XFBML"], function(){
            FB.Facebook.init( 'appapikey' , '/path/xd_receiver.htm' , null );
            var template_id = number_id;
            var user_message_prompt = 'What do you think of this book?';
            var user_message = {value: 'write your review here'};

            var template_data={
                    'test_name':'Taipei' ,
                    'test_result':'OK',
                    'images':[{'src':'http://pad.thedigitalmovement.com/_blaise/2007-06-15-dgen-breakfast.jpg', 'href':'http://tw.yahoo.com/'}]
            }
            var body_general='';
            var target_ids = '';

            var continuation = function() {
                    // do something
            };

            FB.Connect.showFeedDialog( template_id, template_data, target_ids , body_general, null, FB.RequireConnect.require, continuation, user_message_prompt, user_message);
        </script>



    • 至於 template_id 部分,則是要先去製作樣版




  5. 新增留言板

    • <fb:fbml>
              <fb:comments xid="a_unique_id" showform="true" canpost="true" candelete="false">
                      <fb:title>請留下寶貴的意見</fb:title>
              </fb:comments>
      <fb:fbml>  






常見問題:



  • 什麼是 templates

    • 這是一個預先刻劃好的樣版,可重複使用,只需要填寫關鍵字就行了!最大好處是可以很漂亮的排好擺在塗鴉牆上,而搭配關鍵字的變動,就可以拿來當做測試結果的顯示,好比如 A 得 90 分、 B 得 75 分等等,就只要把關鍵字弄成可變動囉!詳細部份可以到 http://developers.facebook.com/tools.php?templates 玩玩,可以為自己的應用程式製作專屬的樣版,而上述就是一個使用樣版的塗鴉牆例子。

    • 採用舊式申請 template 的方式,facebook 已打算在 2009/12/20 停用此功能,此例先保留給舊式範例,新式用法歡迎參考:發佈到個人塗鴉牆的樣版設定教學



  • 無法顯示 templates

    • 要特別留意傳給 templates 的資訊,連 images 變數中的 src 位置不存在也會導致不會顯示,當初以 IE 測試,發現很久都沒顯示訊息,改用 Firefox 才蹦出 src 位置不對的消息,另外,還可以參考下面連結的 showFeedDialog 的相關文章,有的跟隱私有關。



  • 使用 fb:request-form 之 略過 / Cancel 問題

    • 當第二頁採取呈現 Invite Friends 頁面時,當使用者點選 [略過] 或 [寄送邀請] 時,頁面將導向於 action 的位置,然而,有時我們會使用 GET 的方式來掌控頁面流程,但有些時候不希望將訊息暴露在瀏覽器的 url 資訊上,此時可以解決的方式是將資料改採用 POST 傳遞


    • 留意的是當使用者點選 [略過] 或 [Cancel] 時,這份資訊卻不會送給 action 所指定的頁面,最簡單的處理方式,就是使用 SESSION 變數來處理

      • 在進入第二頁時,將 $_SESSION['flag']  =  1 

      • 當使用者用了 [略過] 或 [Cancel] 時,就可在 action 所指向的 url 進行處理囉,例如得知此 flag 資訊,自動將 status 設成 2 。設定完後,可以再將 flag 清掉

        • unset( $_SESSION['flag'] );








參考資訊:



簡單的 FBML 範例程式,需填寫 API Key 、Template ID 等設定:


<?php
// Copyright 2007 Facebook Corp. All Rights Reserved.
//
// Application: TEST
// File: 'index.php'
// This is a sample skeleton for your application.
//

require_once 'facebook.php';

$appapikey = 'your_app_api_key';
$appsecret = 'your_app_secret';
$facebook = new Facebook($appapikey, $appsecret);
$user_id = $facebook->require_login();
$template_id = 0123456789;

$status = isset( $_REQUEST['status'] ) ? intval( $_REQUEST['status'] ) : 0 ;
switch( $status )
{
case 1:
?>
<p style="width:100%;text-align:center;">
...等待結果運算...<br /><br /><a href="?status=2">觀看結果</a><br />
</p>
<fb:fbml>
<fb:request-form action="?status=2" method="POST" invite="true" type="MyQuizName" content="快來挑戰!<?php echo htmlentities("<fb:req-choice url=\"http://apps.facebook.com/your_app_name/\" label=\"Authorize My Application\"") ?>" >
<fb:multi-friend-selector showborder="false" actiontext="邀請朋友參加此測試">
</fb:request-form>
</fb:fbml>
<?php
break;
case 2:
?>
<script>
function do_post()
{
var template_id = <?php echo $template_id; ?>;
var user_message_prompt = '想說的話:';
var user_message = {value: ''};
var template_data={
'test_name':'Tapie' ,
'test_result':'OK',
'images':[
{
'src':'http://pad.thedigitalmovement.com/_blaise/2007-06-15-dgen-breakfast.jpg',
'href':'http://tw.yahoo.com/'
}
]
}
var body_general='';

var continuation = function() {
// do something
};
Facebook.showFeedDialog( template_id, template_data, body_general, '', continuation, user_message_prompt, user_message );
}
</script>
<p style="width:100%;text-align:center;">
測試成果:100分<br /><a href="#" onclick="new Dialog().showMessage('測驗結果', '100分').onconfirm = do_post ; return false;">詳細資訊</a><br />
</p>
<?
break;
default:
?>
<form id="testForm" method="POST" action="?status=1">
<input type="hidden" id="Q_number" name="Q_number" value="1" />
<table width="100%">
<tr>
<td>Q1:你會製作表單嗎?</td>
</tr>
<tr>
<td>
<input type="radio" name="Q[0]" value="1" />會 <br />
<input type="radio" name="Q[0]" value="2" />不會
</td>
</tr>
<tr>
<td>
<button style="submit" onclick="document.getElementById('testForm').submit();">Submit</button>
</td>
</tr>
</table>
</form>
<?php
break;
}
exit;
?>



2009/10/28 筆記:


上述例子採用單一檔案(index.php)搭配參數(status)來決定目前的狀態(1:填寫答案,2:邀請朋友,3:顯示結果與張貼個人塗鴉牆),在部分情況會有一些問題,如新增留言板服務時等等的。


測試結果,建議可以改成 3 個頁面獨立運作比較乾淨,依序是 index.php 、 invite.php 和 result.php,程式碼範例如下:



  • base.php

    • 這個是下面這幾支程式的最上頭都要 include 進來的片段

    • <?php
      // Copyright 2007 Facebook Corp.  All Rights Reserved.
      //
      // Application: TEST
      // File: 'index.php'
      //   This is a sample skeleton for your application.
      //

      session_start();

      require_once 'facebook.php';

      $appapikey = 'your_app_api_key';
      $appsecret = 'your_app_secret';
      $facebook = new Facebook($appapikey, $appsecret);
      $user_id = $facebook->require_login();
      $template_id = 123456789;
      ?>




  • index.php

    • <?php
      require( 'base.php' );
      ?>
      <form id="test" name="test" method="POST" action="invite.php">
              <table width="85%">
                      <tr>
                              <td><br /><hr width="70%" /></td>
                      </tr>
                      <tr>
                              <td>
                                      Q1:請問太陽是否都從西邊出來?
                              </td>
                      </tr>
                      <tr>
                              <td>
                                      <input type="radio" name="Q1" value="1" checked /> Yes <br />
                                      <input type="radio" name="Q1" value="2" /> No <br />
                              </td>
                      </tr>
                      <tr>
                              <td><br /><hr width="70%" /></td>
                      </tr>
                      <tr>
                              <td>
                                      Q2:請問月亮是否都從東邊出來?
                              </td>
                      </tr>
                      <tr>
                              <td>
                                      <input type="radio" name="Q2" value="1" checked /> Yes <br />
                                      <input type="radio" name="Q2" value="2" /> No <br />
                              </td>
                      </tr>
                      <tr>
                              <td>
                                      <button>送出</button>
                              </td>
                      </tr>
              </table>
      </form>





  • invite.php

    • <?php
      require( 'base.php' );

      // 計算分數
      $_SESSION['score'] = 0;
      if( isset( $_REQUEST['Q1'] ) && $_REQUEST['Q1'] == 1 )
              $_SESSION['score'] += 50;

      if( isset( $_REQUEST['Q2'] ) && $_REQUEST['Q2'] == 2 )
              $_SESSION['score'] += 50;

      ?>
      <fb:fbml>
              <fb:request-form action="result.php" method="POST" invite="true" type="MyQuizName" content="快來挑戰!<?php echo htmlentities("<fb:req-choice url=\"http://apps.facebook.com/your_app_name/\" label=\"Authorize My Application\"") ?>" >
                      <fb:multi-friend-selector showborder="false" actiontext="邀請朋友參加此測試">
              </fb:request-form>
      </fb:fbml>





  • result.php

    • <?php
      require( 'base.php' );
      ?>
      <script>
      var message = '你真厲害';
      function do_post()
      {
              var template_id = <?php echo $template_id; ?>;
              var user_message_prompt = '感言:';
              var user_message = {value: ''};
              var template_data={
                      'images':[
                                      {
                                              'src':'http://upload.wikimedia.org/wikipedia/commons/thumb/0/06/Facebook.svg/200px-Facebook.svg.png',
                                              'href':'http://www.facebook.com/'
                                      }
                              ] ,
                      'level' : message
              }
              var body_general='';

              var continuation = function() {
                      // do something
              };
              Facebook.showFeedDialog( template_id, template_data, body_general, '', continuation, user_message_prompt, user_message );
      }
      </script>
      <h1>測驗結果: <?php echo $_SESSION['score'] ; ?> 分</h1>
      <a href="#" onclick="new Dialog().showMessage( '分數' , '<?php echo $_SESSION['score']; ?>' ).onconfirm = do_post;return false;">張貼至個人塗鴉牆</a>
      <hr witdh="95%" />
      <fb:comments xid="a_unique_id" showform="true" canpost="true" candelete="false">
              <fb:title>請留言</fb:title>
      </fb:comments>




除了要更改 base.php 中的資訊外,要記得在 result.php 中的 template 等資訊也要適當修改,我記得如果連 src 位置打錯或不存在時,此時就不會蹦出樣版喔,要分外留意啦


22 則留言:

  1. 你好,請問你一個問題...
    為什麼我選擇FBML模式開發的時候...
    網頁總是回應我...
    """
    載入應用程式頁面時出錯。
    此連結 http://127.0.0.1:8000/wenfbapp/ 無效。
    請稍候並再試一次。我們感謝你的耐心等待,wen 與 Facebook 的開發人員會盡快解決這這個問題。
    """
    而我選擇Iframe模式開發的時候,FBML的時候FBML的語法也不會顯示...
    可以請教你是哪邊出了問題嗎?謝謝~

    版主回覆:(03/13/2011 01:02:56 AM)


    有一陣子沒碰, 又快忘了 @_@ 我先猜測一下,若我猜錯請多多包含
    --
    那個 url 位置是不是有問題呢?127.0.0.1?理論上應該要是個 public ip 位置,有可能用 iframe 模式時,127.0.0.1代表你的本地端,因此你恰好可以連到你的電腦而顯示正常,但採用 FBML 時,facebook 會去連 127.0.0.1 這個位置,但這個 ip 默認為自己的機器位置,因此 facebook 只會找他自己,就無法找到你的位置囉,請先確認一下 Canvas Callback URL 是否填寫正確,不能填 127.0.0.1 ,至少該填寫你的機器 public ip 囉

    至於選 iframe 模式時, 的確有滿多 FBML 語法是不會有效的, 我當時沒試很多, 只發現好像有部份解法, 你得再花點心思找資料, 最後我是改成整體上用 FBML 作, 有特別要其他 Javascript 等 framework 的部份, 另外在用 Fb:iframe 來處理

    祝你好運囉!

    回覆刪除
  2. 大大

    你寫的對我們這種咖

    有點看不懂

    能不能稍微再詳細一點

    一步一步來

    最好配上圖,我們比較容易進入狀況

    感謝

    我最近很想做一個Quiz

    或者有做好的API可以直接來用呢

    謝謝

    版主回覆:(10/21/2009 03:29:08 AM)


    如果你是要做現成的 Quiz 就使用別人已經建好的來製作就行, 就是我最上頭列的那幾個, 那個就能依照制式的規格建出來囉 :D 我這篇主要是用在想要自己寫程式去加加減減的, 比較適合熟悉 PHP & Javascript 的人來使用, 因此呈上的是關鍵的片段程式碼, 與圖文或一步步的方式較不同, 而你說想要有做好的 API, 那可以先試試最上頭提到的 Quiz 製造機, 或許已經夠滿足你囉 :)

    回覆刪除
  3. 我試過了

    他好像沒有可以打分數的功能

    所以不太適合我用

    而且沒有公布正確答案的功能

    版主回覆:(10/25/2009 11:25:44 AM)


    建議你先問看看有沒有這類的 Quiz 可套用, 或許可以透過那些現成的來製作, 因為我並不常使用 Facebook 玩 Quiz , 因此不是很清楚.

    如果你都找不到而想要自己來做, 那有不少事要懂, 例如最基本的 HTML 表單(form)跟 PHP 的 $_POST 或 $_GET 或 $_REQUEST 的變數使用等.

    整體架構, 大概在第一頁用 HTML 表單弄出問答, 接著送到第二個頁面, 先使用 PHP 以 $_POST 或 $_GET 或 $_REQUEST 來接收結果, 並依照你的設計完成判斷哪題對或哪題錯, 如此一來也計算完分數, 也可以確定哪些結果要顯示正確答案

    最後, 你可以在第二頁直接印出結果, 或是像我一樣再丟到第三頁來呈現, 但這你要去處理怎樣把資訊丟到第三頁的動作喔, 上述程式碼並沒提及, 而當初第二頁我是拿來邀請朋友用的.

    以上我附的程式算是有類似的架構, 如 default 代表第一頁, case 1 是第二頁, case 2 是第三頁, 你得自行去修改程式

    很抱歉我時間有限無法細部教學, 若你不太懂 HTML 或 PHP 的部分, 建議找個人現場教一下, 以免一直用 try 的比較花時間

    祝你實作順利啦 :)

    回覆刪除
  4. 請問有沒有加入好友的iframe或是Fbml語法呢???

    網路上找了好久說><"

    版主回覆:(10/27/2009 10:32:49 AM)


    我沒用過, 剛稍微找也沒找到 @_@

    回覆刪除
  5. 那請問可以透過Iframe或是Fbml達到這個效果嗎???


    版主回覆:(10/25/2009 04:16:01 PM)


    這我沒接觸過 Orz 現在沒也沒時間嘗試了, 真抱歉

    回覆刪除
  6. 第四個步驟 : 提供 Post 到個人塗鴉牆
    有什麼方法可以讓它自動Post到個人塗鴉牆呢??
    我找了好久都沒看到可以用FBML來做的方法

    版主回覆:(10/26/2009 04:22:37 AM)


    我覺得發佈到個人塗鴉牆這件事與使用者個人隱私有不小的關係, 不太適合自動化. 我找資料的過程中, 恰好也沒看到任何自動化的介紹, 你有需要再花點時間確認看看, 祝你好運啦

    對其他 lib 的使用, 倒是可以先逛一下 API 囉, 例如 Stream.publish
    http://wiki.developers.facebook.com/index.php/Stream.publish

    回覆刪除
  7. 嗯嗯 我在多研究一下
    謝謝大大

    回覆刪除
  8. 請問大大,
    顯示邀請朋友參加的介面,跟Post 到個人塗鴉牆是會有彈出視窗嗎?
    我用iframe跟FBML試了,為什麼都沒有? (IE跟firefox都一樣)
    有什麼要特別注意的地方嗎? @@?
    謝謝!!

    版主回覆:(10/26/2009 04:21:18 AM)


    以邀請朋友參加的介面來說, 以 FBML 為例, 只需打上這段(上述程式碼的片段)

    <fb:fbml>
    <fb:request-form action="?status=2" method="POST" invite="true" type="MyQuizName" content="快來挑戰!<?php echo htmlentities("<fb:req-choice url=\"http://apps.facebook.com/your_app_name/\" label=\"Authorize My Application\"") ?>" >
    <fb:multi-friend-selector showborder="false" actiontext="邀請朋友參加此測試">
    </fb:request-form>
    </fb:fbml>

    (需在修改上述部分位置, 如 url 等)

    就會出現可以點選好友的介面, 點選完於最下面寄送邀請. 這個最後還是會跳出視窗詢問你有沒有要加什麼話給對方的.

    至於 POST 到塗鴉牆上也是會蹦出視窗, 問你要不要順便寫上什麼評語. 你可以先把頁面弄到最簡單, 甚至只貼上剛剛那段程式碼, 若可以正常執行, 那代表可能有其他地方影響到(例如Javascript有問題)

    iframe mode 比較麻煩一些 :P 你得留意如何使用喔

    回覆刪除
  9. 謝謝大大~
    不過我試著拿原本的sample改(顯示25個朋友那個)
    在最後面加上那段程式碼,也是一樣沒有彈出視窗 ><
    而且連sample那個 Hello 後面,也不會顯示任何ID?!
    是我少安裝了什麼嗎? 只有25個朋友有列出來 (畫部設定用 FBML)
    但因為我的URL是內部IP,所以用http://apps.facebook.com/xxxxx/會連不過去
    我是直接打Canvas Callback URL去測,不知道有沒有關係?

    謝謝你了!!

    版主回覆:(10/27/2009 10:37:29 AM)


    "因為我的URL是內部IP,所以用http://apps.facebook.com/xxxxx/會連不過去" 這個就是關鍵問題囉

    我剛試著新增一個應用程式,一樣是用 FBML 模式,並且貼上 Sample Code 以及上則留言所提到邀請介面的程式碼,最後的結果是有印出 25 位朋友的 ID 以及顯示出邀請介面囉。

    但是, 如果不是透過 http://apps.facebook.com/xxxxx/ 方式去連,還是會印出 25 朋友,但不會印出那個視窗。

    這個現象是很合理的,你要先了解 FMBL 模式流程,其實是你連到 http://apps.facebook.com/xxxxx/ 時,Facebook後端機器才去連你設定的 Canvas Callback URL 來取得資料,緊接著,它會依照裡頭填寫的 FBML 程式碼再置換成相對於顯示上瀏覽器的 HTML , CSS 或 Javascript 程式碼,因而產生那些效果。

    因此,你直接去連 Canvas Callback URL 時,雖然還是可以正常去 Facebook 上撈出 25 位好友 ID 並印出來,但其他的 FBML 並不會工作囉,另一種解決就是用 Iframe 模式。

    最後,寫 Facebook Apps 還是要提供外部 IP (Public IP)供人連過去才是,不然你寫好的程式就可能只有你自己能看到(以Iframe模式),這樣意義也就不太大了 @_@

    回覆刪除
  10. Dear
    我有個FB上建立的問題,我想要在粉絲專頁裡面建立一個像底下連結一樣的表單http://www.facebook.com/Clarins 裡面tell us這樣的表單,請問一下是用FBML寫嗎?另外在粉絲專頁也可以插入物件讓網友們下載使用嗎?!
    如果您方便,是否可以回覆到我的email?!感恩

    版主回覆:(10/28/2009 10:48:30 AM)


    粉絲頁面我還沒玩過 所以你講的我都不會 還沒碰過囉 等我有空再玩玩囉 因此 就不寄信吵你了 :)

    回覆刪除
  11. 請問
    我配置好了 在http://apps.facebook.com/*****/上面能顯示朋友的ID
    而在Canvas Callback URL我自己上門顯示Uncaught exception 'FacebookRestClientException' with message 'Session key invalid or no longer valid' 這個怎麼回事?

    版主回覆:(10/28/2009 11:51:56 AM)


    Hm..這情況我沒碰過, 環境不同難以幫你 debug Orz

    我目前開發是用 FBML 模式, 幾乎什麼效果都是 http://apps.facebook.com/xxxx/test.php 這種方式來測試, 沒直接連去 Canvas Callback URL 來測.

    這真的快跟開發嵌入式一樣了 XD 每一次改變都要去連 facebook, 很花時間 :P

    回覆刪除
  12. 站長大大你好~~
    請問一下若是用iframe怎麼透過fbjs的方式送邀請給好友~~

    版主回覆:(10/30/2009 03:15:00 AM)


    第一步:

    http://wiki.developers.facebook.com/index.php/Cross_Domain_Communication_Channel

    第二步:

    <fb:serverfbml style="width: 100%;">
    <script type="text/fbml">
    <fb:fbml>
    <fb:request-form action="?status=2" method="POST" invite="true" type="XFBML" content="快來挑戰!<?php echo htmlentities("<fb:req-choice url=\"http://apps.facebook.com/my_app_name/\" label=\"Authorize My Application\"") ?>"

    <fb:multi-friend-selector showborder="false" actiontext="邀請朋友參加此測試">
    </fb:request-form>
    </fb:fbml>
    </script>
    </fb:serverfbml>

    回覆刪除
  13. 哇!我有好多問題想問您耶!
    我的能力不是很好,得問些很普通的東西喔!
    我想問:
    我想要在自己的程式post資訊到個人塗鴉上,我該怎麼寫呢?我依了您的方式,有點不行耶!
    我可以請教一下:
    template_id, template_data, body_general, continuation, user_message_prompt, user_message
    其中所真正代表的東西是什麼嗎?
    拜託拜託您了!

    版主回覆:(10/30/2009 03:08:03 AM)


    嗯, 目前我呈現的例子是 FBML 模式(非iframe模式), 如果你在 http://apps.facebook.com/xxxx/ 上至少有把 Sample 程式跑出來, 呈現出朋友清單了, 那至少已經完成基本的環境囉

    這篇所教的 template 的用法 facebook 已打算不支援, 所以如果已經完成基本的設定, 那你可以看一下這一篇 http://changyy.pixnet.net/blog/post/25291900 (Facebook API Template Bundle - 發佈到個人塗鴉牆的樣版設定教學) , 把該篇的程式貼上, 接著要記得呼叫 do_post() 即可囉.

    回覆刪除
  14. 不好意思,我想先把舊的弄成功耶!請問一下,這裡的第三個result如果照貼,會成功嗎?是不是點「張貼至個人塗鴉牆」就會連到什麼地方呢?另外,你的意思是不是要我們先弄一個template呢?

    版主回覆:(11/01/2009 01:45:47 AM)


    舊的本身要去申請一個 template 才能用, 但因為目前 facebook 已經把申請功能停掉了, 因此無法申請一個 template_id , 更不用說使用 template 囉, 所以, 只好在發佈至個人塗鴉牆這邊, 改用新的方式.

    如果你直接照貼第三部分(result.php), 基本上不會發生什麼事, 只是無法張貼至塗鴨牆.

    而發表至個人塗鴉牆就是在個人頁面發表一則訊息, 可以給好友看到

    回覆刪除
  15. 請問下 我現在想上傳文件 用$_FILES['userfile']取傳過來的數組 我在我的Canvas Callback URL是能打印出來 但我在我facebookapp 裏面卻為空的 這是怎麼回事呢?

    版主回覆:(11/01/2009 04:11:36 PM)


    不曉得你是不是用 FMBL 模式? 你要的功能可能 FBML 模式不能滿足你, 因為 FBML 模式流程圖是由 facebook 向你的 server 要資料, 因為上傳的動作變成使用者上傳到 facebook, 這就滿有機會被擋掉.

    這種功能感覺是 iframe 模式才行 (詳情我沒試過, 也都不確定orz)

    相關資訊請看看這邊吧, 裡頭有 FBML 跟 iframe 模式的流程圖
    http://wiki.developers.facebook.com/index.php/Choosing_between_an_FBML_or_IFrame_Application

    回覆刪除
  16. 站長你好
    我想讓塗鴉牆上應用的comment 和like 成為公用 像粉絲頁裏的comment 和like一樣 能看到有多少人評論了 我應該怎麼去做 謝謝!

    版主回覆:(11/04/2009 10:47:21 AM)


    最近有空試了

    Facebook API Template - 塗鴉牆共同互動留言教學
    http://changyy.pixnet.net/blog/post/25788405

    回覆刪除
  17. 我又回來了.借樓上的問題問下

    是用api的粉絲頁推廣好,還是原來的那種粉絲頁推廣好呢?

    兩者,目前我沒有發現什麼不同,不知道api 的粉絲頁是否可以改名成www.facebook.com/xxx 這樣.

    版主回覆:(02/12/2010 09:32:08 AM)


    你問的問題我也還沒玩 XD 所以得請你自行去試試囉, 我也不曉得哪種比較好, 至於網址位置部分亦不清楚

    回覆刪除
  18. 你寫得真好,謝謝你的分享,讓我這個初學者可以好好參考一下!
    另外有個問題想請教一下,如果想把像一般外面提供部落格小工具的內嵌
    程式碼也擺在Facebook的粉絲頁或社群的左邊小方框,
    是不是有什麼比較簡單的做法?
    譬如外面已經有一些Quiz的小工具,也提供介面產生程式碼,
    我可以怎樣搭配利用呢?

    版主回覆:(03/30/2010 03:04:47 AM)


    不好意思,你的問題我不太清楚該怎樣解決,我並沒有在玩粉絲或社群頁面,頂多寫寫 PHP 程式而已,稍微逛了一下,我也沒找到如何增加"小方框"的方式,所以暫時沒有想法該怎樣幫助你囉

    回覆刪除
  19. 那有辦法把一些內嵌的程式碼放在facebook的個人profile上嗎?

    版主回覆:(04/15/2010 10:07:13 AM)


    我昨天在應用程式的粉絲頁面,其中的簡介區,有稍微試試 HTML 的 iframe 語法,並沒有成功。這也是很合情合理,因為會有一些安全性的問題,所以很多站都是有擋掉的。(像 Javascript 語法也常常會被擋掉)

    至於其他你講的地方,就得靠你自行去 try 看看囉。

    回覆刪除
  20. 了解,感謝你的分享~
    最近因為需要一個免費的web hosting server給facebook呼叫時服務,
    在 http://www.joyent.com/ 上面找到可以申請一年免費使用的計畫,
    如果大家有需要的也可以去申請玩看看。

    回覆刪除
  21. 你好!!請問一下台灣啤酒裡的頁籤"玩啤報"的是用哪一種的應用程式而成的,附上連結!!再請回覆一下~~感謝
    http://www.facebook.com/beer.taiwan#!/beer.taiwan?v=app_126177754080232


    版主回覆:(04/16/2010 12:10:01 AM)


    抱歉,小弟沒有玩過這個部份,無法幫上忙

    回覆刪除
  22. 想請問一下用fbml 開啟朋友邀請清單後,
    有辦法知道邀請了哪些人嗎?或是知道哪些人有點接受繳請?

    版主回覆:(09/29/2010 12:10:24 AM)


    Hm...我沒用過 XD
    頂多邀請完就算了

    回覆刪除