使用Java開發Facebook應用程式

原文作者:Daniel 原文連結:Tips for writing FaceBook applications in Java

這篇原文似乎已經找不到了,看起來Daniel已經從人間蒸發掉了一樣,剩的只有簡體翻譯,雖然Facebook官方不再繼續支援Java了,不過熟Java的ㄧ也不用灰心,應該還是會有出路的,ㄚ琪試著將簡體文轉成繁體來看,並且檢視看看還能不能操作。

當你想用Java寫一Facebook的應用程式,你把在facebook的帳號中加入的程式開發模組,下載了相關的java函式庫。忽然你發現不得不停下來:開發相關的入門介紹、樣板程式和文件說明在哪兒?這樣的挫敗感令人憤怒,而最終導致你不得不放棄。

“我覺得缺乏良好的Java開發相關的說明文件是令人不安的” 。

但願有人會儘快寫一個不錯的應用Java 開發Facebook應用的入門指南。也許只需要你給我些好吃的巧克力,我們就可以寫些相關的介紹文件,老實說我們的確也解決了不少相關的問題。這裏有一些技巧幫助你使用Java開始建立自己的 Facebook應用程式。 這並不是一個完整的入門指南,但它可以幫你在著手做時少走些彎路。

八個注意事項輔助你建構Java/Facebook應用程式

1.為了你的幸福和健康,建議你使用5.0或更高的JDK。

2.不用看Facebook Java程式套件中的例子,因為那些例子是針對Java桌面應用程式使用的。而通常你是需要寫一個Web應用程式,這兩種應用的區別還是很大的。 一開始,你需要一個Web應用服務容器,你可能會選擇Tomcat,但我不會,這裏面有另一個故事,我會找個合適的時間再告訴你。Facebook的網路應用有一個不常見的調用模式。大多數你的頁面會被Facebook調用。用戶請求一個Facebook的頁面,頁面中的主要內容會從你的伺服器中返回給用戶。你系統的內容會融合到Facebook的頁面裏返回給用戶。大多數情況下這些流程不需要你的干預就能很好的執行。但需要注意的是你伺服器端產生的頁面中的Javascript是不能執行的,這就意味著普通的AJAX不再在Facebook中應用。如果你需要使用AJAX的技術實現Facebook 提供的 mock-ajax不能完成的功能,則需要通過Facebook的頁面跳到你伺服器上的一般頁面。

3.設定你在Facebook上的應用程式

不要忘了填寫Facebook應用的設定檔,你應該設置:

應用程式的回調網址。

應用程式的名字- 這個名字用來表示標識在Facebook的頁面。(這些頁面可以是用iframe嵌入到Facebook的導航頁,也可以是用FBML標記的頁面)。一但設定,比如http://apps.facebook.com/yourappname/yourpagename 這個頁面就會從Facebok產生一個請求到你的伺服器 。對於新用戶來說,這就是一個你的應用程式的歡迎頁面,邀請用戶來使用傳播你的這個應用。

4.用Facebookrestclient

最重要的階級,在用戶端類別庫中最重要的類別是facebookrestclient。這個類中包含一系列調用Facebook服務端的方法,並涵蓋了大部分你需要的功能。可惜facebookrestclient不是個架構清晰的類別。幾乎所有的請求,需要一個facebookrestclient 這是建造一個會話密鑰 。用戶登錄後可以從CGI變數中獲得會話的密鑰。(參考 FacebookParam.SESSION_KEY.toString())沒有登錄的用戶需要引導到一個登錄頁面。 試試以下方法:

// 創建一個無會話狀態的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 ;

// 這裏轉向到登錄頁面

// 登錄後就會返回會話key

FacebookRestClient.auth_getSession() 以我的經驗基本沒用。他的作用是把一個無會話的client變成一個有會話的。我發現從CGI變數中獲取會話要比試用這個方法簡單。

當有一個會話key的FacebookRestClient,你可以調用這個類別提供的各種Facebook編輯方法。這些方法可以很方便與Facebook進行交換操作。但不幸的是這些方法返回的是未經處理的XML文檔,這些文檔後續的處理會比較麻煩。

比如 friends_get()返回的是

<document>

<friendsgetresponse>

<uid>1uid>

<uid>2uid>

<uid>3uid>

friendsgetresponse>

document>

你也許想封裝一些提取資訊的方法,例如調用friends_get(),試試這個

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返回局部頁面

當你生產在Facebook中的頁面時,比如這樣的一個位址http://apps.facebook.com/yourappname/yourpagename,你必須返回的一個HTML或FBML標記的頁面片段,而不是一個完全的HTML頁面。

6.學習FBML 。

FBML這是一套特有的Facebook標籤。試用標籤可以讓你很方便的完成很多功能(比如顯示用戶的名稱和圖片)。

7.用戶邀請好友

你想完成病毒式推廣的邀請好友?Facebook最近修改了他的API(2007.11)。新版本主要改進了一個特殊的form,fb:form。具體的說明在這裏:http://developers.facebook.com/docs/reference/fbml/request-form/

原來完成這功能的方法FacebookRestClient.notifications_sendRequest()已經不再使用了,如果你不慎調用將會得到一個異常。

8.用戶檔案資訊顯示頁面

要想將一些資訊放入用戶的檔案資訊頁面,使用FacebookRestClient.profile_setFBML()。這個方法複寫了你在應用裏設定的默認資訊頁面。當你設定了用戶的個人檔案的FBML頁面,這些頁面被流量時,Facebook會緩存這些頁面資訊而不會即時更新。這樣就使得用戶資訊的動態更新會麻煩一些。當一個事件觸發用戶資訊改變時,你需要重新調用profile_setFBML()更新這些資訊。幸運的時既然你已經有一個登錄的用戶端可以做任何事情,所以這個用戶端也可以任意設置你的用戶資料的資料項目。

好了,就這些

我還是一個Facebookapi的初學者,如果你是專家,請留言斧正。

祝福你們在構建web2.0的路上一路順風。

感謝你看到這裡,很快就可以離開了,但最好的獎勵行動就是按一下幫我分享或留言,感恩喔~

點我分享到Facebook

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *