沒想到要寫寫 Facebook API 啦!我原先以為是 Facebook 會提供一個工作站讓使用者上傳程式碼去運行,結果做這件事的還得自行找一台機器啦,但這樣也比較合情合理,畢竟電腦運算就是要耗 CPU 資源,就是要耗電。
之所以要紀錄這些,目的是給自己一個筆記,雖然官方的教學已經夠清楚,但沒有中文就是不友善啦。
- 首先,必須要有一個 Facebook 的帳號,在此就不多講,接著登入後,連結至 Facebook | 開發人員 ,並且點選 [Set Up New Application]
- 輸入應用程式的名稱,例如:Example,並且觀看條款後勾選同意。
- 系統會為你的應用程式產生獨一無二的資訊,如 Key 等,接著回到[我的應用程式]頁面,並且看到剛剛新增的"Example"資訊,最下方有個項目是[Sample Code],即可點選"example code"可觀看範例程式和簡單安裝的過程
教學,此範例程式已經是可以運行的程式碼,並且已將應用程式的資訊(Key)也填寫上去了。 - 找一台可以用的工作站,必須支援 PHP 程式語言跟 Web Service
- 在Web Service 的自己目錄下(Ex:/home/ID/WWW,/home/ID/
public_html),新增 facebook 相關程式- # cd /path/public_html/facebook_example/
- # wget 'http://svn.facebook.com/svnroot/platform/clients/packages/facebook-platform.tar.gz'
- # tar -zxvf facebook-platform.tar.gz
- # mv facebook-platform/php/* .
- 新增 index.php 並且加入資訊
- <?php
// Copyright 2007 Facebook Corp. All Rights Reserved.
//
// Application: Example
// File: 'index.php'
// This is a sample skeleton for your application.
//
require_once 'facebook.php';
$appapikey = 'your_appapikey';
$appsecret = 'your_appsecret';
$facebook = new Facebook($appapikey, $appsecret);
$user_id = $facebook->require_login();
// Greet the currently logged-in user!
echo "<p>Hello, <fb:name uid=\"$user_id\" useyou=\"false\" />!</p>";
// Print out at most 25 of the logged-in user's friends,
// using the friends.get API method
echo "<p>Friends:";
$friends = $facebook->api_client->friends_get();
$friends = array_slice($friends, 0, 25);
foreach ($friends as $friend) {
echo "<br>$friend";
}
echo "</p>";
?> - 此為官方範例,結果是印出使用者 25 位朋友
- <?php
- 最後的設定
- 連至 Facebook | 開發人員 並且點選應用程式名稱為 "Example" 的 "編輯設定"
- 切換至[畫布]頁面,並且至少設定以下資訊
- 畫布頁面網址
- http://apps.facebook.com/your_app_name/
- 這是 Facebook 使用者連到你的應用程式的 link 位置
- Canvas Callback URL
- http://Your_Web_Service/facebook_example/
- 這是你擺放運行程式碼的機器,至少提供 Web Service 跟運行 PHP 的能力
- 畫布頁面網址
- 測試連結,請先登入 Facebook,接著連到 http://apps.facebook.com/your_app_name/
位置,接著像使用其他程式服務一般,蹦出同意訊息,點選過後,就會呈現出運行結果,此例是列出使用者的名字,並且列出 25 位朋友的 ID
如此一來,就完成使用 Facebook API Example 啦,這支算是簡單的程式,剩下的就是如何善用 Facebook 的社群資訊和力量囉。
相關文章
- Facebook API Example - 客製化 Quiz 測驗教學筆記
- Facebook API Template Bundle - 發佈到個人塗鴉牆的樣版設定教學
- Facebook API Publisher - 使用 Attach 附件服務增加發佈塗鴉牆的效果
- Facebook API Template - 塗鴉牆共同互動留言教學
- Facebook API Stream.publish 與 Extended permissions 應用 - 同步發文至個人塗鴉牆
- Facebook Connect 搭配 API 提供帳號管控教學
- iPhone 開發教學 - 發訊息到 Facebook 塗鴉牆上!使用 Facebook Connect 架構
- Android 開發教學筆記 - 使用 Facebook SDK
好開心
回覆刪除找了半天終於有人寫的這麼清楚
好感動
謝謝你腰
版主回覆:(10/23/2009 06:48:00 AM)
很高興有幫助到你
請問能夠繼續寫下去嗎??
回覆刪除我想做一個測驗的api
請問該怎麼做呢
謝謝
版主回覆:(10/25/2009 12:54:53 PM)
我在 "Facebook API Example - 客製化 Quiz 測驗教學筆記" 這篇回你好了 :) 這篇只是用來當作初試 Facebook API 啦, 因此越簡單越好, 單純給自己一個筆記而已
請問第5點"在Web Service 的自己目錄下新增 facebook 相關程式"中,應怎樣新增 facebook 相關程式?
回覆刪除謝謝
版主回覆:(10/25/2009 03:39:25 PM)
第五點下面不是有四道指令, 那就是一個範例的下載與擺放的過程啊
想請問版主:
回覆刪除幸福,不是做自己喜歡的事,而是喜歡自己做的事
這兩句話有何不同?
小弟才疏學淺還請板主賜教
小弟不生感激....
版主回覆:(03/03/2010 10:06:47 AM)
這個問題問得太好了!不過跟這篇文章沒有關係,下次可以改用留言板問問題囉~
在這邊順手回應一下,這個意境就像去「適應環境」而不是「讓環境適應你」囉,這段話我是這樣解釋的,代表嘗試去喜歡自己做的事,而不是專門去挑自己喜歡的事來做囉!如此一來,幸福就在不遠處。
新人問下。
回覆刪除我不小心為同一個站添加了,兩個應用程式,居然沒有沖突,不過兩個應用程式名字一樣,工作起來很不方便,想刪除一個,應該如何操作呢?
版主回覆:(03/09/2010 04:14:54 PM)
在瀏覽應用程式的那個頁面時( http://www.facebook.com/developers/apps.php ), 右下角下面有"刪除這個應用程式"可以選擇囉
太感謝嘍,沒想到回複這麼快。
回覆刪除這個問題搞定了。
另外問下,我同樣的js應用代碼,在本地詞服器(loaclhost)與server(申請時網域)上測試,後者可正常運行。
我試著在在應用程式編輯頁的->進階->伺服器安全清單 中,取消。 在localhost上還是不行。
博主有辦法嗎?
版主回覆:(03/10/2010 07:20:06 AM)
我的使用經驗就是要在申請的網域才行運作囉, 我沒有在本地端使用的經驗啦
這段時間耽誤了,沒上來。
回覆刪除終於找到了#6樓的解決方法。 只需要把本地的server網域綁定好。同時更改本地機上的hosts文件,增加一行server 127.0.0.1,再在本地目錄傳個xd_receiver.htm文件。即可!
版主回覆:(03/10/2010 05:08:18 PM)
哦哦!都忘了還有這種解法,感謝你的分享 :D
你寫錯了 應該是要下 tar -zxvf
回覆刪除版主回覆:(03/17/2010 12:45:53 PM)
的確, 你這樣下比較正確, 我的環境只需下 xvf 就會自動解壓縮, 但還是改成你說的好了, 感謝囉!
您好,不好意思,我想請教一下,我照您的步驟做出來-->http://apps.facebook.com/sentytest/,,但解答卻跳不出來,請問我少了什麼程序嗎??謝謝您
回覆刪除版主回覆:(03/22/2010 03:47:41 AM)
有點久沒用了,回想一下好像也有類似的情況。以下就當作參考吧!
原先我也是用 Javascript 去做頁面 reload 的方式,想說全部寫在 index.php, 然後搭配變數資訊就知道在哪一個階段,但不知為啥,會有你類似的問題,最後我是改用 form 的方式將使用者的資料送出去,並且沒有全部寫在 index.php 了,例如分別寫 index.php, result.php ,一開始在 index.php 上成列問題,最後送到 result.php 去計算結果囉
但這些已經是四、五個月以前的事了,你可以當作參考就好。也有可能是 Javascript 有問題,等等的,不過已經被 facebook 轉換過了,也不好幫忙囉。再此祝你好運啦!
不好意思,又來叨擾您了,我改了改,結果出現以下的錯誤->Parse error: syntax error, unexpected $end, expecting ')' in /raid/vhost/soho.com.tw/www/blog/www/php/facebookapi_php5_restlib.php on line 2517
回覆刪除實在是不曉得問題出在那裡,想來請教您,謝謝您
版主回覆:(03/29/2010 05:50:04 AM)
這好像有點難 debug 囧rz, 你先嘗試把整個 code 註解起來, 只留 require( 'facebookapi_php5_restlib.php' ); 看看還有沒有這種訊息, 若沒有的話, 應該是其他部分的程式碼的問題, 有時候 bug 不一定是顯示在上頭所指的地方, 看起來比較像出現在使用相關函式或物件的地方吧, 但如果真的還是出現在 facebookapi_php5_restlib.php, 那大概是不小心改到它了吧 Orz
我連你文中的那個連接登入後,出現畫面的右上角是這樣:http://img143.imageshack.us/img143/2083/image1qm.jpg
回覆刪除然後點Home回去首頁,在點左上的Application連結,出現畫面中間是這樣:http://img443.imageshack.us/img443/8489/image2pb.jpg
那個我之前做的mytestfb ap在第一張截圖中沒有出現?
版主回覆:(04/29/2010 10:53:00 AM)
唔, 我這邊倒是可以看到, 不過我顯示的是中文"我的程式/查看我的應用程式", 暫時不知該怎樣幫你 Orz
最近連facevook,發現網頁上沒有地方可以點進去開發人員那個連結。而且我從我的首頁點application可以看到我之前做的一個ap。但是現在點你文章中的那個Facebook | 開發人員 連結,出現要我按一個allow按鈕,按了後顯示的網頁好像是沒看過的develop頁面,然後右上方卻顯示我沒有application,太奇怪了。可知道原因?
回覆刪除版主回覆:(04/06/2010 10:34:36 AM)
我點選 "http://www.facebook.com/developers/" 連過去後, 還是可以看到我曾寫過的程式耶, 看看你會不會用錯帳號了呢?? 最近 Facebook 相關頁面都更新了, 快半年沒去看, 有點不習慣 @_@
想請問一下我當初用PHP是用appserv整合套件的
回覆刪除不知道安裝的路徑在哪裡@@?
試了一整天 快崩潰了 ORZ
版主回覆:(04/29/2010 02:51:04 PM)
我印象中預設位置在 C:\AppServ 囉, 所以網頁擺放的位置大概是在 C:\AppServ\www 吧
謝謝你的解答^ ^
回覆刪除可是放上去你的index.php有一個錯誤欸@@
Fatal error: Call to undefined method Facebook::require_login() in C:\AppServ\www\fb\facebook-php-sdk-d18f698\index.php on line 6
這是表是甚麼嗎?
還是我裝錯了
謝謝@@
版主回覆:(06/19/2010 08:41:28 AM)
可能是找不到相關的函式庫, 例如沒有把檔案擺好位置, 如 facebook.php, facebookapi_php5_restlib.php 等等
這是我下載下來的PHP library
回覆刪除example.php
facebook.php
tests.php
可以請問一下你說的位置是要放在哪裡嗎@@
我是全部放在appserv的www資料夾中
還是說要分開放呢
麻煩你 謝謝
版主回覆:(06/20/2010 07:51:02 AM)
我剛剛從 Facebook 那邊下載回來, 即: facebook-php-sdk-v2.0.4-1-gb570543.tar , 裡頭共有
facebook-php-sdk-b570543/
pax_global_header
進入 facebook-php-sdk-b570543/ 共有
examples/
src/
tests/
readme.md
你可以試著多看看 readme.md 和 examples/examples.php, 裡頭已經有很不錯的範例, 你要多多留意 php 語法和檔案最上頭的 require 位置, 如 examples/examples.php 最上頭是 require '../src/facebook.php'; 你大概只是遺漏這個問題, 把路徑調整對了就沒問題囉
剩下的就交給你自己去摸索囉
OK
回覆刪除我會再試試看 有問題再請教您
謝謝你的解答喔~ ^ ^
那怎麼樣讓facebook的uid去對應到遊戲的暱稱啊!?
回覆刪除每個遊戲都有一個暱稱,那怎麼讓uid去對應到那個暱稱!?
版主回覆:(06/20/2010 10:52:23 AM)
沒試過不清楚囉, 只是那些暱稱感覺是該遊戲在管控的, 總覺得有存取的權限問題?!
想請教在使用FB API時,網站一定要掛在FB下才能執行,還是在自己網內就可以使用這些API的東西呢?
回覆刪除謝謝
版主回覆:(06/23/2010 09:46:45 AM)
大部分的程式都是掛在 FB 下才能執行, 但你可以使用 Facebook Connect , 使得從你的網站就可以去存取 FB 資料, 但過程中還是要連到 FB 去
不曉得上述的情境是不是你所謂的網內, 也就是你在你自己架的站上 http://host/my_app/ 上, 使用者可以完全都只在 http://host/my_app/ 上頭做事, 但底層則是透過 Facebook Connect API 去跟 FB 要東西
你好 我現在再輸入Canvas callback那邊的網址時
回覆刪除我打入 http://danny1989522.myftp.org/facebook_example/index.php 像這樣
我這個是我自己用我的主機當作server 這樣算是工作站嗎?
可是FB好像不承認我這樣的網址
它會出現像這樣的訊息
Validation failed.
Canvas Callback URL is not a valid URL.
可以請問該怎麼解決嗎 這種自己申請的網域名稱 FB怎不承認@@?
謝謝
版主回覆:(07/02/2010 10:03:27 AM)
你申請的 domain name 似乎還沒啟用??
我在 cmd mode 上執行 nslookup danny1989522.myftp.org 時,並不能找到對應的 IP
你可以到 http://twbbs.org 申請免費的一組試試
不好意思又來打擾您
回覆刪除Fatal error: Call to undefined method Facebook::require_login() in C:\AppServ\www\facebook-php-sdk-71d9a52\index.php on line 14
上次這個問題還是沒解決
我依照步驟把您上面說的index放到C:\AppServ\www\facebook-php-sdk-71d9a52 這個路徑下
也成功放到FB上,可是他顯現的是這個錯誤訊息,不能如同大大說的可以正常輸出25名好友
我抓的函式庫是如同之前您載的
facebook-php-sdk-b570543/
pax_global_header
進入 facebook-php-sdk-b570543/ 共有
examples/
src/
tests/
readme.md
我是全部都放在C:\AppServ\www裡面
但是就是沒辦法正常WORK... 您的index我只做了以下修改
require_once './src/facebook.php';
$appapikey = '451d9a0a6b2fda614e2c9559aa70f210';
$appsecret = '6169053bd6870dce86f1274af7a26c2a';
不好意思要一直問您問題
謝謝
版主回覆:(08/09/2010 11:27:19 PM)
抱歉, 我常常用來測試的機器維修中 orz 少了 public ip 我無法幫你忙
好@@
回覆刪除我再繼續摸索看看
謝謝
你好~
回覆刪除不好意思要請問你一個問題
請問一下"如何Microsoft Facebook API 3.0在vs.net中呼叫Facebook函數及功能"?
謝謝
版主回覆:(08/11/2010 05:18:19 AM)
我沒用過 .NET 環境,所以無法幫忙
請問一定要PHP嗎純HTML或asp.net可以抓到好友名單嗎
回覆刪除