Home » Facebook應用程式, Featured

【Facebook應用程式開發教學1】用PHP輕鬆開發第一支App,傻瓜入門術!

Sting Tao 28 November 2009

標題說是傻瓜入門的原因是,這是我在Facebook上的第一支app,前後只花了兩小時,後來就沒改了,做為簡單入門的教學頗為適合,因此拿出來分享一下。

the_1st_facebook_app

這是個讓你測驗你的英文程度是否有國小程度的小程式,是個生活學習類的有用ap。要進入狀況前,請先玩一下:測驗:國小畢業應該具備的單字基礎


1. 簡單解說一下這支程式的相關流程:

首先,要玩這支ap的fb user必須先授權給這支程式,也就是第一個畫面,同意之後才能開始玩。

1

接下來,程式自動從資料庫中找單字來出題,答題後告訴你剛剛答對還是答錯並且計算答題總數,這是一般的php。

2

每答對十題,程式跳出一個視窗,請你發佈一些訊息到你的Wall上面。

3

2. 要達成以上的需求,基本上非常簡單,首先你自己的php程式應該先寫好了,再做facebook的整合就很快了。

以下我用簡化的code假設你的主程式是這麼寫的,這只是個例子,真正的程式邏輯要靠自己來。在這個簡化的code裡面,使用者永遠需要選第三個選項,這樣就會答對,否則就會答錯,顯示答錯的訊息給你看。

logic的部分(controller):

if ($_POST['choice']) {
    if ($_POST['choice'] == '3') {
        $msg="答對了";
    } else {
        $msg="答錯了";
    }
}

presentation的部分(view)

<?php echo $msg; ?>

請開始作答

題目:water

 <form method="post" action="test.php" name="test1" id="test1">
<div>

<div><input type="radio" name="choice" value="1" onclick="document.getElementById('test1').submit();">努力工作的,勤勉的</div>

<div><input type="radio" name="choice" value="2" onclick="document.getElementById('test1').submit();">…的,…所有的</div>

<div><input type="radio" name="choice" value="3" onclick="document.getElementById('test1').submit();">水</div>

<div><input type="radio" name="choice" value="4" onclick="document.getElementById('test1').submit();">粉筆</div>

</div>
</form>

3. 有了上述的核心程式,現在就有兩件事得做:

a .怎麼讓facebook user授權給你的這支程式哩?

b. 如何跳出提示訊息讓使用者發佈訊息到wall?

首先,到 http://www.facebook.com/developers註冊一個新的應用,這頁的右上角有個”Set Up New Application”接下來,就是設置這個新的ap的相關重要參數,最重要的是:

驗證裡面的 Post-Authorize Callback URL,當使用者授權ok後,fb就會把使用者導往這個網址,如果沒有特殊的設計,就填寫你的程式所在的網址,在我們的例子裡,假設我剛剛寫的那個php程式放在 http://stingtao.info/1/2/test.php,那麼這個欄位就寫http://stingtao.info/1/2/test.php

以及Canava裡面的 畫布頁面網址 與 Canvas Callback URL,第一個只要不跟別人的重複,隨便你寫,第二個如果你沒有特殊的需求,也是填寫你的程式所在的網址,例如: http://stingtao.info/1/2/test.php

其他設定請看真的例子:

4

5

存檔後,基本上facebook平台上的設定就好了,請注意抄下以下三個數值,後面會用到。

Application ID
API 金鑰
秘密

4. 下載 php client library, 網址在 http://svn.facebook.com/svnroot/platform/clients/packages/facebook-platform.tar.gz

我們假設你解開的路徑就是相對於test.php所在目錄下的facebook子目錄中。

5. 接下來,就超簡單了,直接先寫出結果吧,照著抄一定會work的,所以我直接用註解描述相關事情:

在剛剛的主程式加入紅字的部分:

logic的部分(controller):

require_once('facebook/php/facebook.php');
$facebook = new Facebook('API 金鑰','Application Secret');  //把剛剛看到的數字取代相關金鑰以及秘密
$appid = 'Application ID';  //字串裡面換成你的 app ID
$fb_user = $facebook->require_login(); //就是這行,fb就會要使用者登入了

if ($_POST['choice']) {
    if ($_POST['choice'] == '3') {
        $msg="答對了";
    } else {
        $msg="答錯了";
    }
}

presentation的部分(view)

<?php echo $msg ;?>

請開始作答

題目:water

 <form method="post" action="test.php" name="test1" id="test1">
<div>

<div><input type="radio" name="choice" value="1" onclick="document.getElementById('test1').submit();">努力工作的,勤勉的</div>

<div><input type="radio" name="choice" value="2" onclick="document.getElementById('test1').submit();">…的,…所有的</div>

<div><input type="radio" name="choice" value="3" onclick="document.getElementById('test1').submit();">水</div>

<div><input type="radio" name="choice" value="4" onclick="document.getElementById('test1').submit();">粉筆</div>

</div>
</form>

<?php if (!empty($msg) ) { //這段的意思就是只要答題,那麼就跳一個視窗出來問要不要publish 到 wall,這是facebook提供的javascript 函式,不用想太多,就用下去就會有效果

?>
<script>
var actionLinks = [{ "text": "想瞭解facebook ap的開發?到inside.com.tw", "href": "http://www.inside.com.tw"}];
Facebook.streamPublish('<?php echo $msg;?>',
'',
 actionLinks,
'',
'剛剛答題的結果如下:',
'',
true
);</script>

<?php } ?>

6. ok, 打開瀏覽器指向你剛剛填的Canvas URL, 網址類似 http://apps.facebook.com/nciku_english這樣的東西,你就會看到熟悉的facebook應用程式使用流程了。

Sting Tao

陶韻智。 email: stingtao at gmail.com

  • Pingback: 【Facebook應用程式開發教學2】用ruby on rails輕鬆開發第一支App,傻瓜入門術! | 網路趨勢行銷與開發

  • Pingback: 不明究理 » Blog Archive » 【Facebook應用程式開發教學1】用PHP輕鬆開發第一支App,傻瓜入門術!

  • Pingback: 不明究理 » Blog Archive » 【Facebook應用程式開發教學2】用Ruby on Rails輕鬆開發第一支App,傻瓜入門術!

  • http://otk.idv.tw/ akai

    您好,您的說明是所有網頁中最簡單清楚的了!感謝!
    我完全依照您的方法製作,但是卻出現下面訊息
    Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /raid/vhost/otk.idv.tw/www/siq/facebook/php/facebook.php on line 38

    仔細看facebook.php中,完全找不出問題,不知道您是否遇到這樣的問題?
    我的app網址 http://apps.facebook.com/sidevelopment/

  • Sting Tao

    您可能哪個大括弧少了一邊?或有分號忘了加
    建議Debug的時候先把裡面的內容縮到最少,再一段一段加回去。
    或者一段一段刪掉,看到哪個時候沒問題。就知道問題出在哪一段。

  • http://otk.idv.tw/ akai

    facebook.php是下載回來的,沒有改過!
    後來爬文發現,應該是PHP版本的問題!
    果然我的PHP版本是4.4.9的!
    這個方法適合用在PHP5
    感謝!

  • 鼠先生

    您好,初來到訪 :)
    想請教您一個問題,不知您是否有經驗。如果我開發的facebook應用程式是要在iPhone上面使用的,是否要經過facebook的審核呢? 因為目前在串接測試應用程式於iphone與facebook的流程已經ok,功能可正常使用。但facebook應用程式頁面有審核的流程,是否一定要送審呢?

  • http://stingtao.info/ Sting Tao

    Hi…Facebook應用程式頁面審核流程?我想你指的是”列在應用程式列表上”需要審核流程,沒有審核的應用程式在管理頁上會看到”Directory Status: Not Submitted”. 但這個不影響使用者使用.沒有規定一定要送審. 只是送審過了之後,使用者會較容易主動發現你的應用程式.

  • 鼠先生

    瞭解了,謝謝您的資訊,因為我原本以為在Facebook上的應用程式都必須經過Facebook的審核才可以正式的launch。謝謝您的解惑 :)

  • fish

    您好,我照您的方法做,也是用msg產生回應的,但我的答案卻跳不出來–>http://apps.facebook.com/sentytest/test-sister4.php?_fb_q=1,不知道我那個步驟有遺忘,請您指導一下,謝謝

  • fish

    您好,我想做個小小心理測驗,找到您這,真的非常詳細,照您的步驟所做,也是用msg,但我的答案完全跳不出來,我的app網址 http://apps.facebook.com/sentytest/test-sister4…

  • Sting Tao

    hi,
    把code寄給stingtao@gmail.com才容易看的出問題在哪裡…..
    或者,您想辦法debug一下…先改成最簡單的版本
    一個選項 一個答案之類的
    先做出最簡單會成功的版本

  • http://otk.idv.tw/ Akai

    感謝~因為這一篇,我已經可以寫出自己的facebook app,特此表達謝意~
    http://apps.facebook.com/aadhdtest/

  • Sting Tao

    恭喜您!多開發些有趣的app給大家玩喔~

  • 劉妹妹

    按照您的詳細說明 已經順利的運作一個小應用程式了

    參考其他的應用程式
    最後還有 推薦此程式給其他朋友 的機制
    所以請問 如果要添加此功能
    應該在程式碼中添加哪些呼叫

  • Sting Tao

    我再來寫一篇吧。
    請注意新文章

  • 劉妹妹

    期待中…
    並建議編寫為整個完整系列放在Facebook中
    讓Facebook的中文應用程式更容易入手

  • http://profiles.yahoo.com/u/APDCHPVFWV5ATJPYD6JLZSDUEA David

    你好,我嘗試了很多次,將範例程式放在某網站,比方說http://www.example.com/test/的紫目錄下,然後在Facebook應用程式網站的Canvas Callback URL 登錄http://www.example.com/test/,然後每次都出現Validation failed(畫布頁面網址只可以包含小寫字母、 – 和底線),能給我指點迷津嗎?謝謝

  • http://pulse.yahoo.com/_PPDTTL3WSNVPD4PJAVZ3ZJLC3U 星星

    請問
    4. 下載 php client library, 網址在 http://svn.facebook.com/svnroot/platform/clients/packages/facebook-platform.tar.gz 己經失效了

    你還有舊版的 這個 facebook-platform.tar.gz 嗎…

    我載了新版的 程式碼 執行

    $fb_user = $facebook->require_login(); <== 這行是不能跑的

  • http://twitter.com/stingtao stingtao

    現在要用新版的跑法…

  • Pingback: 【Facebook應用程式開發教學1】用PHP輕鬆開發第一支App,傻瓜入門術!

  • Asa

    想請教一下 小弟我 用Appserv + no-ip弄出來一個網
    後來把官方載的函式庫放到appserv/www/compliments/ 這目錄裡 compliments此目錄是自創
    接下來有個問題
    我把 examples目錄裡的 example.php 改成 index.php 也把裡面id 和金鑰改好了

    改好後要連他卻顯示錯誤

    Fatal error: Uncaught exception ‘Exception’ with message ‘Facebook needs the CURL PHP extension.’ in C:AppServwwwComplimentssrcfacebook.php:4Stack trace:#0 C:AppServwwwComplimentsexamplesindex.php(3): require()#1 {main} thrown in C:AppServwwwComplimentssrcfacebook.php on line 4

  • Birdstar

    請問一下, 您的單字測驗是使用nciku提供的api, 還是您自行擷取的呢?

  • http://twitter.com/stingtao stingtao

    nciku是我做的呀~ 上一份工作

  • Birdstar

    失敬失敬~~~~

  • Nick

    我自己有一個app要上傳~但是 Site URL is not a valid URL 請問一下這是什麼問題?!

  • http://www.facebook.com/allenj01 簡谷勳

    為什麼我建好後
    都會出現”此內容無法在框架中顯示為了協助保護您在此網站所輸入的資訊安全性,此內容的發行者不允許在框架中顯示資訊。”的訊息呢??