posts - 66,comments - 41,trackbacks - 0
           當(dāng)你想用Java寫(xiě)一Facebook的應(yīng)用?你把在facebook的帳號(hào)中加入的程序開(kāi)發(fā)模塊,下載了相關(guān)的java類庫(kù)。忽然你發(fā)現(xiàn)不得不停下來(lái):開(kāi)發(fā)相關(guān)的入門(mén)介紹,樣例代碼和文檔說(shuō)明在哪兒?這樣的挫敗感令人憤怒,而最終導(dǎo)致你不得不放棄。
           
            但愿有人會(huì)盡快寫(xiě)一個(gè)不錯(cuò)的應(yīng)用Java 開(kāi)發(fā)facebook應(yīng)用的入門(mén)指南。也許只需要你給我些好吃的巧克力,我們可以寫(xiě)些相關(guān)的介紹文檔,老實(shí)說(shuō)我們的確也解決了不少相關(guān)的問(wèn)題。這里有一些技巧幫助你使用java開(kāi)始建立自己的 facebook應(yīng)用。 這并不是一個(gè)完整的入門(mén)指南,但他可以幫你在著手做時(shí)少走些彎路。
           
            八個(gè)注意事項(xiàng)輔助你構(gòu)建Java/facebook應(yīng)用
           
            1.為了你的幸福和健康,建議你使用5.0或更高的JDK開(kāi)發(fā)包。
           
            2.不用看facebook java開(kāi)發(fā)包中的列子,因?yàn)槟切├邮轻槍?duì)java桌面應(yīng)用程序的。而通常你是需要寫(xiě)一個(gè)web應(yīng)用,這兩種應(yīng)用的區(qū)別還是很大的。 一開(kāi)始,你需要一個(gè)web應(yīng)用服務(wù)容器,你可以能會(huì)選擇tomcat,但我不會(huì),這里面有另一個(gè)故事,我會(huì)找個(gè)合適的時(shí)間再告訴你。Facebook的網(wǎng)絡(luò)應(yīng)用有一個(gè)不常見(jiàn)的調(diào)用模式。大多數(shù)你的頁(yè)面會(huì)被facebook調(diào)用。用戶請(qǐng)求一個(gè)facebook的頁(yè)面,頁(yè)面中的主要內(nèi)容會(huì)從你的服務(wù)器中返回給用戶。你體統(tǒng)的內(nèi)容會(huì)融合到facebook的頁(yè)面里返回給用戶。大多數(shù)情況下這些流程不需要你的干預(yù)就能很好的執(zhí)行。但需要注意的是你服務(wù)器端產(chǎn)生的頁(yè)面中的javascript是不能執(zhí)行的,這就意味著普通的ajax不再在facebook中應(yīng)用。如果你需要使用AJAX的技術(shù)實(shí)現(xiàn)facebook 提供的 mock-ajax不能完成的功能,則需要通過(guò)facebook的頁(yè)面跳到你服務(wù)配器上的一般頁(yè)面。
           
            3.配置你在facebook上的應(yīng)用程序
           
            不要忘了填寫(xiě)facebook應(yīng)用的配置文件,你應(yīng)該設(shè)置: 應(yīng)用程序的回調(diào)網(wǎng)址。
           
            應(yīng)用程序的名字- 這個(gè)名字用來(lái)表示標(biāo)識(shí)在facebook的頁(yè)面。(這些頁(yè)面可以是用iframe嵌入到facebook的導(dǎo)航頁(yè),也可以是用FBML標(biāo)記的頁(yè)面)。一但設(shè)定,比如http://apps.facebook.com/yourappname/yourpagename 這個(gè)頁(yè)面就會(huì)從facebok產(chǎn)生一個(gè)請(qǐng)求到你的服務(wù)器 .對(duì)于新用戶來(lái)說(shuō),這就是一個(gè)你的應(yīng)用程序的歡迎頁(yè)面,邀請(qǐng)用戶來(lái)使用傳播你的這個(gè)應(yīng)用。
           
            4.用facebookrestclient
           
            最重要的階級(jí),在客戶端類庫(kù)中最重要的類是facebookrestclient.這個(gè)類中包含一系列調(diào)用facebook服務(wù)端的方法,并涵蓋了大部分你需要的功能。可惜facebookrestclient是不是個(gè)架構(gòu)清晰的類。幾乎所有的請(qǐng)求,需要一個(gè)facebookrestclient 這是建造一個(gè)會(huì)話密鑰 .用戶登陸后可以從CGI變量中獲得會(huì)話的密鑰。(參考 FacebookParam.SESSION_KEY.toString())沒(méi)有登陸的用戶需要引導(dǎo)到一個(gè)登陸頁(yè)面。 試試以下方法:
           
            // 創(chuàng)建一個(gè)無(wú)會(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)向到登陸頁(yè)面
           
            // 登陸后就會(huì)返回會(huì)話key
           
            FacebookRestClient.auth_getSession() 以我的經(jīng)驗(yàn)基本沒(méi)用。他的作用是把一個(gè)無(wú)會(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返回局部頁(yè)面
           
            當(dāng)你生產(chǎn)在facebook中的頁(yè)面時(shí),比如這樣的一個(gè)地址http://apps.facebook.com/yourappname/yourpagename,你必須返回的一個(gè)HTML或FBML標(biāo)記的頁(yè)面片段,而不是一個(gè)完全的HTML頁(yè)面。
           
            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.
           
            原來(lái)完成這功能的方法FacebookRestClient.notifications_sendRequest()已經(jīng)不再使用了,如果你不慎調(diào)用將會(huì)得到一個(gè)異常。
           
            8.用戶檔案信息顯示頁(yè)面
           
            要想將一些信息放入用戶的檔案信息頁(yè)面,使用FacebookRestClient.profile_setFBML()。這個(gè)方法復(fù)寫(xiě)了你在應(yīng)用里設(shè)定的默認(rèn)信息頁(yè)面。當(dāng)你設(shè)定了用戶的個(gè)人檔案的FBML頁(yè)面,這些頁(yè)面被流量時(shí),facebook會(huì)緩存這些頁(yè)面信息而不會(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 閱讀(471) 評(píng)論(0)  編輯  收藏 所屬分類: Others
          主站蜘蛛池模板: 莱西市| 乃东县| 安龙县| 高雄市| 道孚县| 新河县| 梁平县| 临西县| 阳泉市| 忻州市| 太仓市| 吉林省| 宁国市| 宜黄县| 福安市| 长垣县| 韶关市| 咸丰县| 白朗县| 济宁市| 鄂州市| 江陵县| 青浦区| 绥滨县| 突泉县| 英吉沙县| 仲巴县| 营口市| 台北市| 沁水县| 邹平县| 耿马| 济阳县| 云浮市| 沿河| 信宜市| 辰溪县| 北辰区| 高平市| 昌黎县| 宕昌县|