當(dāng)你想用Java寫一Facebook的應(yīng)用?你把在facebook的帳號(hào)中加入的程序開發(fā)模塊,下載了相關(guān)的java類庫。忽然你發(fā)現(xiàn)不得不停下來:開發(fā)相關(guān)的入門介紹,樣例代碼和文檔說明在哪兒?這樣的挫敗感令人憤怒,而最終導(dǎo)致你不得不放棄。
但愿有人會(huì)盡快寫一個(gè)不錯(cuò)的應(yīng)用Java 開發(fā)facebook應(yīng)用的入門指南。也許只需要你給我些好吃的巧克力,我們可以寫些相關(guān)的介紹文檔,老實(shí)說我們的確也解決了不少相關(guān)的問題。這里有一些技巧幫助你使用java開始建立自己的 facebook應(yīng)用。 這并不是一個(gè)完整的入門指南,但他可以幫你在著手做時(shí)少走些彎路。
八個(gè)注意事項(xiàng)輔助你構(gòu)建Java/facebook應(yīng)用
1.為了你的幸福和健康,建議你使用5.0或更高的JDK開發(fā)包。
2.不用看facebook java開發(fā)包中的列子,因?yàn)槟切├邮轻槍?duì)java桌面應(yīng)用程序的。而通常你是需要寫一個(gè)web應(yīng)用,這兩種應(yīng)用的區(qū)別還是很大的。 一開始,你需要一個(gè)web應(yīng)用服務(wù)容器,你可以能會(huì)選擇tomcat,但我不會(huì),這里面有另一個(gè)故事,我會(huì)找個(gè)合適的時(shí)間再告訴你。Facebook的網(wǎng)絡(luò)應(yīng)用有一個(gè)不常見的調(diào)用模式。大多數(shù)你的頁面會(huì)被facebook調(diào)用。用戶請(qǐng)求一個(gè)facebook的頁面,頁面中的主要內(nèi)容會(huì)從你的服務(wù)器中返回給用戶。你體統(tǒng)的內(nèi)容會(huì)融合到facebook的頁面里返回給用戶。大多數(shù)情況下這些流程不需要你的干預(yù)就能很好的執(zhí)行。但需要注意的是你服務(wù)器端產(chǎn)生的頁面中的javascript是不能執(zhí)行的,這就意味著普通的ajax不再在facebook中應(yīng)用。如果你需要使用AJAX的技術(shù)實(shí)現(xiàn)facebook 提供的 mock-ajax不能完成的功能,則需要通過facebook的頁面跳到你服務(wù)配器上的一般頁面。
3.配置你在facebook上的應(yīng)用程序
不要忘了填寫facebook應(yīng)用的配置文件,你應(yīng)該設(shè)置: 應(yīng)用程序的回調(diào)網(wǎng)址。
應(yīng)用程序的名字- 這個(gè)名字用來表示標(biāo)識(shí)在facebook的頁面。(這些頁面可以是用iframe嵌入到facebook的導(dǎo)航頁,也可以是用FBML標(biāo)記的頁面)。一但設(shè)定,比如http://apps.facebook.com/yourappname/yourpagename 這個(gè)頁面就會(huì)從facebok產(chǎn)生一個(gè)請(qǐng)求到你的服務(wù)器 .對(duì)于新用戶來說,這就是一個(gè)你的應(yīng)用程序的歡迎頁面,邀請(qǐng)用戶來使用傳播你的這個(gè)應(yīng)用。
4.用facebookrestclient
最重要的階級(jí),在客戶端類庫中最重要的類是facebookrestclient.這個(gè)類中包含一系列調(diào)用facebook服務(wù)端的方法,并涵蓋了大部分你需要的功能。可惜facebookrestclient是不是個(gè)架構(gòu)清晰的類。幾乎所有的請(qǐng)求,需要一個(gè)facebookrestclient 這是建造一個(gè)會(huì)話密鑰 .用戶登陸后可以從CGI變量中獲得會(huì)話的密鑰。(參考 FacebookParam.SESSION_KEY.toString())沒有登陸的用戶需要引導(dǎo)到一個(gè)登陸頁面。 試試以下方法:
// 創(chuàng)建一個(gè)無會(huì)話狀態(tài)的FacebookRestClient
FacebookRestClient client = new FacebookRestClient ( 你的api密鑰 , 你的加密密鑰 ) ;
String token = client.authcreateToken () ;
String loginURL = “http : //www.facebook.com/login.php?v=1.0&apikey=&”+ YOUR APIKEY +“&auth_token =”+ token ;
// 這里轉(zhuǎn)向到登陸頁面
// 登陸后就會(huì)返回會(huì)話key
FacebookRestClient.auth_getSession() 以我的經(jīng)驗(yàn)基本沒用。他的作用是把一個(gè)無會(huì)話的client變成一個(gè)有會(huì)話的。我發(fā)現(xiàn)從CGI變量中獲取會(huì)話要比試用這個(gè)方法簡(jiǎn)單。
當(dāng)有一個(gè)會(huì)話key的FacebookRestClient,你可以調(diào)用這個(gè)類提供的各種facebook編輯方法。這些方法可以很方便與facebook進(jìn)行交換操作。但不幸的事這些方法返回的是未經(jīng)處理的XML文檔,這些文檔后續(xù)的處理會(huì)比較麻煩。
比如 friends_get()返回的是
<document>
<friendsgetresponse>
<uid>1</uid>
<uid>2</uid>
<uid>3</uid>
</friendsgetresponse>
</document>
你也許想封裝一些提取信息的方法,例如調(diào)用friends_get(),試試這個(gè)
Document d = client . friends_get () ;
NodeList userIDNodes = d . getElementsByTagName ( " uid " ) ;
int fcount = ids . getLength () ;
List < Integer > friends = new ArrayList < Integer > () ;
for ( int i = 0 ; i < fcount ; i ++ )
{ Node node = userIDNodes . item ( i ) ;
String idText = node . getTextContent () ;
Integer id = Integer . valueOf ( idText ) ;
friends . add ( id ) ; }
這樣friends的列表里就填充好了用戶的id.
5.servlet返回局部頁面
當(dāng)你生產(chǎn)在facebook中的頁面時(shí),比如這樣的一個(gè)地址http://apps.facebook.com/yourappname/yourpagename,你必須返回的一個(gè)HTML或FBML標(biāo)記的頁面片段,而不是一個(gè)完全的HTML頁面。
6.學(xué)習(xí)FBML .
FBML這是一套特有的facebook標(biāo)簽。試用標(biāo)簽可以讓你很方便的完成很多功能(比如顯示用戶的名稱和圖片)。
7.用戶邀請(qǐng)好友
你想完成病毒式推廣的邀請(qǐng)好友?facebook最近修改了他的api(2007.11)。新版本主要改進(jìn)了一個(gè)特殊的form,fb:form.
原來完成這功能的方法FacebookRestClient.notifications_sendRequest()已經(jīng)不再使用了,如果你不慎調(diào)用將會(huì)得到一個(gè)異常。
8.用戶檔案信息顯示頁面
要想將一些信息放入用戶的檔案信息頁面,使用FacebookRestClient.profile_setFBML()。這個(gè)方法復(fù)寫了你在應(yīng)用里設(shè)定的默認(rèn)信息頁面。當(dāng)你設(shè)定了用戶的個(gè)人檔案的FBML頁面,這些頁面被流量時(shí),facebook會(huì)緩存這些頁面信息而不會(huì)即時(shí)更新。這樣就使得用戶信息的動(dòng)態(tài)更新會(huì)麻煩一些。當(dāng)一個(gè)事件觸發(fā)用戶信息改變時(shí),你需要重新調(diào)用profile_setFBML()更新這些信息。幸運(yùn)的時(shí)既然你已經(jīng)有一個(gè)登陸的客戶端可以做任何事情,所以這個(gè)客戶端也可以任意設(shè)置你的用戶資料的數(shù)據(jù)項(xiàng)。
MSN:
posted on 2008-02-15 01:00
kylixlu 閱讀(470)
評(píng)論(0) 編輯 收藏 所屬分類:
Others