Facebook網站很流行,插件應用程序很豐富,其核心開發一直很神祕。 javascript
其實facebook網站一直用eclipse 開發,經過eclipse的 php
漢化Eclipse的主要步驟就是肯定Eclipse的版本,而後從官網上下載對應版本的漢化包,把漢化包解壓到Eclipse的安裝目錄下,重啓就漢化完成了。 html
在Eclipse的啓動畫面中能夠看到Eclipse的版本,記住這個版本的名稱。圖下: java
也能夠在Eclipse啓動後,點擊菜單項——Help——About Eclipse. ajax
在彈出的About窗口中也能夠找到當前Eclipse的版本號。 編程
到Eclipse的官網上下載漢化語言包。打開語言的網頁後,根據獲取到的版本號點擊選擇要下載的語言包,這個例子中的Eclipse的版本爲Kepler,就點擊Kepler.圖 api
在打開的頁面中找到Language:Chinese(Simplified)簡體中文的區塊,而後選擇帶有eclipse-zh的壓縮包。 跨域
點擊選擇鏡像進行下載。 服務器
把下載到的語言包進行解壓,能夠看到壓縮包中包含了一個eclipse文件夾,這個文件夾下有兩個目錄plugins,features。 session
複製plugins,features這兩個文件夾到eclipse的安裝目錄下。
若是提示文件夾下已經包含相同文件名稱的文件夾,那麼選擇是把兩個文件夾進行合併。
複製完成後,從新啓動Eclipse,Eclipse就成功地被漢化了。
OK,漢化成功啦,中文界面可用啦
英文好,能夠直接開發寫code,
建立、調試和部署一個餐館搜索應用程序
在開始開發 Facebook SimpleRestaurantSearch 應用程序前,須要下載並安裝 Eclipse 的 Galileo 包(參見 參考資料)。本章節將介紹如何設置 Galileo。
Galileo 包表明了 Eclipse 的下一個增量發佈版,於是,也就意味着要全新安裝 Eclipse 平臺。和全部 Eclipse 發佈版同樣,您能夠根據本身的開發需求從大量包中進行選擇。
下載 Eclipse IDE for Java™ EE Developers 版本,由於它包含了開發和部署一個 Facebook 應用程序所需的全部東西。選擇適合您的操做系統的版本,選中一個適當的鏡像並下載它(參見 參考資料)。這個文件很大 — 將近 190 MB,下載速度與您的平臺有關 — 因此要耐心。
Eclipse Web 站點提供了一個對照表,如圖 1 所示。
下載完成後,將這個包解壓縮到 Eclipse 將被安裝到的位置,而後雙擊 Eclipse 圖標,運行它。選擇一個工做區, Eclipse 將帶您進入歡迎頁面。從中選擇 Workbench 圖標(圖 2 所示的歡迎屏最右側的箭頭)。
Eclipse Galileo 容許集成各類不一樣的服務器,從而能夠開發、調試和部署任何 Web 應用程序。對於當前的這個 Facebook SimpleRestaurantSearch 應用程序,咱們將使用 Tomcat 做爲應用服務器(參見 參考資料)。將 Tomcat 下載到一個本地文件夾並將它解壓縮。
切換到 Eclipse 並打開服務器視圖(參見圖 3)。
右鍵單擊這個服務器視圖並選擇 New > Server menu 選項(參見圖 4)。
經過選擇適當的選項定義一個新的服務器。選擇 Apache 類別下的 Tomcat V6 Server 選項。能夠根據應用程序的須要給這個服務器起一個有意義的名字,好比 EclipseBook-Host,而後單擊 Next(參見圖 5)。
在下一個嚮導窗口中,鍵入 Tomcat 安裝目錄,選擇所需的 JRE,而後單擊 Finish(參見圖 6)。
在正確配置 Tomcat 後,此服務器就會出如今服務器視圖中。在默認狀態下,服務器端口被設置爲 8080(參見圖 7)。
接下來,咱們將創建 Dynamic Web Project 以便可以從 Eclipse 內處理應用程序的 Web 界面。
單擊 Project Explorer,而後右鍵單擊並選擇 Dynamic Web Project(參見圖 8)。
爲這個項目起個名字,並將目標運行時設爲這個 Tomcat Server 名稱。還記得吧,咱們以前已經將 Tomcat Server 命名爲 EclipseBook-Host。單擊 Finish 完成這個 Web 項目的建立,這個項目被配置爲使用 Tomcat 服務器及默認的 Web 配置(參見圖 9)。
截止到 2008 年 5 月,Facebook 已經終止了對其官方 Java 客戶機的任何支持,那些熱衷於用 Java 技術開發 Facebook 應用程序的用戶被建議使用各類各樣的第三方客戶機。在 Google 上就能夠找到一些經常使用的 Facebook Java API (參見 參考資料)。所以,這個項目的目的如今變成了維護、支持和擴展這個被放棄的代碼庫,覺得 Java 開發人員提供一個高質量的、最新版本的 Facebook API 客戶機(參見圖 10)
將最新的 Java Facebook API (V3.0.0)下載到本地文件夾並解壓縮這些文件(參見圖 11)。
Facebook Java API 包含全部與 Facebook Application API 相關的庫以及其餘依賴 JAR(參見圖 12)。咱們這個示例應用程序的源代碼能夠在 下載 部分找到。請注意,這些 JAR 文件並無包含在該 ZIP 文件中,由於在這裏是經過 Facebook Java API 下載的這些 JAR 文件。
將全部 Facebook Java Client JAR 複製到 SimpleRestaurantSearch 應用程序的 lib 文件夾中。這就使得此項目如今就可使用 Facebook API 了(參見圖 13)。
幾乎每一個人都接觸過 Facebook,這其中包括 Web 開發人員、業務經理和社交狂熱者。在 Facebook 平臺上建立利用 Facebook Application API 的應用程序會爲全部用戶打開一個可視窗口,不管是想要宣傳產品或服務的用戶,仍是想要與朋友共享信息的用戶。
要建立一個 Facebook 應用程序,首先須要得到一個 Facebook Platform API 鍵。請按照下面的步驟用 Facebook Developer 應用程序建立一個應用程序。
進入 Get Started 站點獲取設置這個應用程序所需步驟的概覽(參見 參考資料)。單擊 Helpful Link 中的 Developer App 進入您的用戶概要文件並添加這個 Facebook Developer 應用程序。若是您尚未登陸,那麼會有一個登陸屏提醒您登陸。若是已經登陸,那麼這個應用程序會要求提供受權並會將這個應用程序添加到您的概要文件中(參見圖 14)。
這個開發人員的主頁包含新聞、更新及關於 Facebook Platform API 的文章。
在 Application Name 字段中輸入應用程序的名稱(參見圖 15)。若是已經爲應用程序建立了圖標和徽標,那麼可同時在這個屏幕中輸入這些信息。接受服務條款,而後單擊 Save Changes。
在圖 16 所示的下一個屏幕中顯示了一些重要信息。記下 Application ID、API Key 及 Secret Key 對於後面應用程序的開發很是重要。
在所需信息輸入完畢並保存了這個新應用程序後,一個 RestaurantSearch 應用程序信息的概覽就會當即顯示出來(參見圖 17)。
至此,咱們已經用 Facebook 建立並註冊了一個名爲 SimpleRestaurantSearch 的應用程序。下一步咱們將建立一個簡單的 servlet 並添加用來驗證 Facebook API 鍵的功能。在 Project Explorer 中,進入 SimpleRestaurantSearch 項目,而後在 src 文件夾中建立一個 servlet。將這個 servlet 命名爲 RestaurantSearch,將包命名爲 com.devworks.facebook。單擊 Next 輸入 servlet 初始化參數(參見圖 18)。
在圖 19 顯示的下一個屏幕中,輸入初始化參數 API_KEY 以及在 Facebook 應用程序建立的初始步驟中做爲 API 鍵的值。
在下一個屏幕上,輸入初始化參數 SECRET_KEY 以及在 Facebook 應用程序建立的初始步驟中做爲 secret 鍵的值。
如今,就可使用 API_KEY 和 SECRET_KEY 來驗證這個 Facebook 應用程序了,若是登陸成功,就會輸出一個簡單的 Hello World 消息。
清單 1 是咱們的 RestaurantSearch servlet 的 doGet 方法的關鍵片斷。
01 protected void doGet(HttpServletRequest request, 02 HttpServletResponse response) throws ServletException,IOException { 03 04 String apiKey = getServletConfig().getInitParameter("API_KEY"); 05 String secretKey = getServletConfig().getInitParameter("SECRET_KEY"); 06 HttpSession session = request.getSession(); 07 String sessionKey = (String) session 08 .getAttribute("restSearchAppSession"); 09 String authToken = request.getParameter("auth_token"); 10 11 FacebookJsonRestClient client = null; 12 13 if (sessionKey != null) { 14 client = new FacebookJsonRestClient(apiKey, 15 secretKey, 16 sessionKey); 17 18 } else if (authToken != null) { 19 client = new FacebookJsonRestClient(apiKey, secretKey); 20 client.setIsDesktop(false); 21 try { 22 sessionKey = client.auth_getSession(authToken); 23 session.setAttribute("restSearchAppSession", sessionKey); 24 } catch (Exception e) { 25 e.printStackTrace(); 26 } 27 } else { 28 response.sendRedirect("http://www.facebook.com/login.php?api_key="+apiKey); 29 return; 30 } 31 response.getWriter().println("HelloWorld"); 32 }
第 4 行和第 5 行代碼從 servlet 配置中得到初始參數,好比 API_KEY 和 SECRET_KEY。
若是會話已存在,第 7 行代碼將從會話中獲取會話鍵,不然它將爲 null。
第 9 行代碼從請求參數中獲取驗證 token。若是會話沒有被驗證,那麼它將是 null。
若是 sessionKey 存在,第 14 行代碼會建立一個 FacebookJsonRestClient 並會須要 apiKey、secretKey 和 sessionKey 做爲構造函數參數(參見圖 20)。
若是 sessionKey 不存在,那麼會建立一個僅具備 apiKey 和 secretKey 的 FacebookJsonRestClient。在第 20 行上,請確保設置了正確的客戶機模式。
將應用程序設置成正確的模式,這一點很重要。若是它被設置爲 「desktop mode is false」,那麼當您傳遞一個會話 secret 時,Facebook 服務器就會理解。
藉助驗證 token,在第 22 和 23 行建立 sessionKey 並將它設置爲會話屬性 restSearchAppSession。
假若沒有 sessionKey 和驗證 token,就意味着用戶須要登陸到 Facebook 並得到一個新的會話和驗證鍵。於是,第 28 行就從新指向到 Facebook 登陸。
最後,在輸出書寫器上打印 Hello World ,如第 31 行代碼所示。
完成 RestaurantSearch 應用程序後,就能夠啓動 Tomcat 服務器了。回憶一下,在建立 SimpleRestaurantSearch 應用程序的初始步驟中,咱們已經將這個項目與 Tomcat 服務器 EclipseBook-Host 關聯起來。從服務器的視圖中,啓動 Tomcat。這將在 Eclipse 中啓動 Tomcat 服務器並將部署這個應用程序(參見圖 21)。
啓運 Tomcat 服務器後,瀏覽到 http://localhost:8080/SimpleRestaurantSearch/RestaurantSearch。它會將您帶到一個 Facebook 開發人員頁面,這個頁面會通知您該頁面尚在建設中並提示您應用程序 Callback URL 還沒有設置。單擊這個應用程序的設置編輯器(參見圖 22)。
在這個應用程序設置編輯器中,進入 Canvas 選項卡並輸入 Canvas 頁面 URL(http://apps.facebook.com/devrestaurantsearch)、Canvas Callback URL(http://localhost:8080/SimpleRestaurantSearch/RestaurantSearch)和 Bookmark URL(http://apps.facebook.com/devrestaurantsearch)。保存這些設置(參見圖 23)。
保存新設置後,會出現一個 Application Overview 頁面(參見圖 24)。
Eclipse 真正的優點在於 Tomcat 的集成及熱部署功能。您如今就能夠重啓此服務器,看看保存的應用程序屬性是否是生效了(參見圖 25)。
當此服務器在 Eclipse Galileo 中重啓後,RestaurantSearch servlet 將把您從新引向這個應用程序的登陸頁面(http://www.facebook.com/login.php?api_key=<API_KEY>)。在輸入了 Facebook e-mail ID 和密碼後,這個 servlet 將會寫出響應。
經過 Facebook 應用程序屏幕,咱們知道 API_KEY 是用來讓您登陸到正確的應用程序的。在本例中,就是 SimpleRestaurantSearch(參見圖 26)。
最後,驗證 Facebook 應用程序,sessionKey 和 authKey 一旦生成,屏幕上就會顯示 Hello World(參見圖 27)。
從 Facebook 登出並嘗試在 http://www.facebook.com/apps/application.php?id=144078916555 上訪問此應用程序。Facebook 會顯示應用程序信息,經過登陸就能夠訪問這些信息(參見圖 28)。
在接下來的步驟裏,咱們將使用 Google Search API 並將它集成到一個簡單的 JSP。
Google Ajax Search API 讓您可以用 JavaScript 將 Google Search 放入您本身的 Web 頁面。您能夠嵌入一個簡單的動態搜索框並在您本身的 Web 頁面內顯示搜索結果或以獨特的編程方式使用搜索結果。使用此 API 不須要鍵。是否在您的應用程序/站點內使用鍵是徹底可選的。不過,使用鍵會很是有幫助。
進入到 http://code.google.com/apis/ajaxsearch/signup.html 並接受條款和條件。單擊 Generate API Key(參見圖 29)。
Google 會生成 API 鍵並顯示相應的 URL。此 Web 頁還會提供一些示例以供參考(參見 圖 30)。
將上述 Google Search 所提供的示例代碼複製到 WebContent 文件夾內的 RestaurantSearch.jsp。保存此 JSP 並確保在 SimpleRestaurantSearch 內將代碼要實現的功能從寫出響應 Hello World 更改成將請求分派到 RestaurantSearch.jsp。
將代碼從 response.getWriter().println("Hello World"); 更改成request.getRequestDispatcher("RestaurantSearch.jsp").forward(request,response);。
此 JSP 一旦保存,整個項目就會自動從新部署到 Tomcat 服務器。在以前的步驟中,咱們已經設置了 Canvas URL(http://apps.facebook.com/devrestaurantsearch)和 Canvas Callback URL(http://localhost:8080/SimpleRestaurantSearch/RestaurantSearch)(參見 圖 31)。
若訪問這個 Canvas URL,成功登陸後,RestaurantSearch.jsp 就會啓動 RestaurantSearch 應用程序(參見 圖 32)。
應用程序書籤位於此應用程序工具欄的左下角。您能夠輸入一個搜索字符串進行一次餐館搜索(參見圖 33)。
更改 Google Maps 內的默認位置並在 RestaurantSearch.jsp 內將默認地圖視圖設置爲 NORMAL View(參見清單 2)。
// change the default location in the Google Maps map.setCenter(new google.maps.LatLng(37.773,-122.417),13); // set the Map to Normal view map.setMapType(G_NORMAL_MAP); map.removeMapType(G_HYBRID_MAP); map.addMapType(G_NORMAL_MAP);
保存這個 JSP 來熱部署和從新測試它,以確保位置和地圖類型均已更改(參見圖 34)。咱們如今選擇了 San Francisco 做爲默認搜索位置。此應用程序在 Facebook 內運行後,當用戶在搜索某一類餐館時,他就能夠添加此位置的 ZIP 編碼,應用程序將會返回該位置內的匹配的餐館搜索結果。
如今,經過導航到您的 Facebook 概要文件並在位於右上角的搜索框內搜索 SimpleRestaurantSearch 應用程序,還能夠進行進一步的測試(參見圖 35)。
應用程序搜索將會把您帶到 SimpleRestaurantSearch 應用程序(參見圖 36)。
Facebook Connect 容許您爲您本身的非 Facebook 應用程序使用 Facebook。您能夠在您的站點上使用 Facebook connect API 並讓站點的查看者得以在其各自的概要文件上共享內容。
您將須要建立一個名爲 xd_receiver.htm 的跨域通訊通道文件並將其放在一個與這個回調 URL 相關的目錄內。您所建立的這個 xd_receiver.htm 文件所位於的目錄應是您爲 Connect Web 頁面提供服務所在的目錄(在咱們的示例中爲 WebContent 文件夾)。參見圖 37。
清單 3 所示的是一個跨域通道文件的例子。您能夠複製以下的內容並在 WebContent 文件夾內建立 xd_receiver.htm 文件。若是沒有一個跨域的通道文件,Facebook 將不能直接與咱們的應用服務器通訊(參見清單 3)。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <body> <script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/XdCommReceiver.js" mce_src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/XdCommReceiver.js" type="text/javascript"></script> </body> </html>
在服務器上開始使用 Facebook Connect 的最迅速的方式是使用 JavaScript API 庫。要鏈接到這個庫,必須知足的兩個基本條件是設置正確的文檔類型,以及在 Web 頁面末尾臨近 </body> 標記的位置加載 JavaScript 庫。這個代碼更改能夠在 RestuarantSearch.jsp 文件內完成(參見清單 4)。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml"> <script type="text/javascript" src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" mce_src="http://static.ak.connect.facebook.com/js/api_lib/ v0.4/FeatureLoader.js.php"> </script>
清單 5 所示的這個簡單例子展現瞭如何讓一個用戶登陸到 Facebook Connect 應用程序並顯示該用戶的 Facebook 名稱和概要文件圖片。
<script type="text/javascript"> function update_user_box() { var user_box = document.getElementById("user"); user_box.innerHTML = "<span>" + "<fb:profile-pic uid='loggedinuser' facebook-logo='true'> </fb:profile-pic>" + "Welcome, <fb:name uid='loggedinuser' useyou='false'></fb:name>" + "</span>"; FB.XFBML.Host.parseDomTree(); } </script> <script type="text/javascript" src="http://static.ak.connect.facebook.com/js /api_lib/v0.4/FeatureLoader.js.php"mce_src="http://static.ak.connect.facebook.com/js /api_lib/v0.4/FeatureLoader.js.php"> </script> <script type="text/javascript"> var api_key = "Connect API_key here"; var channel_path = "xd_receiver.htm"; FB.init(api_key, channel_path, {"ifUserConnected": update_user_box}); </script>
要在您本身的服務器上測試它,須要替換清單 5 中的 API 鍵,如圖 38 所示。
此 JSP 一旦保存,它就會被熱部署,而您也就能夠啓動 RestaurantSearch 應用程序了。請注意,在搜索結果的底部能夠看到一個按鈕(參見圖 39)。
若是您已經登陸到了這個 Facebook 會話,單擊 Facebook Connect 會將您帶入到您的概要文件。這裏的理念是 SimpleRestaurantSearch 用戶將會在您本身的概要文件內共享他所喜好的餐館和相關反饋。
這個例子展現了 Facebook Connect API 的真正實力。餐館應用程序啓動後,鏈接到 Facebook Connect 並在您的概要文件上推薦餐館。這些餐館推薦能夠供您的其餘朋友查看。
單擊 Recommendation 按鈕將會打開一個小的嚮導,該向導可接受評論並與朋友共享(參見圖 40)。
要測試這個 Facebook 應用程序,能夠進入此應用程序開發人員概要文件並容許它被他人查看(參見圖 41)。
Eclipse Galileo 已經包括了若干新的和改進了的特性,您能夠利用 Galileo 開發出色的應用程序。本文使用的是 Eclipse Galileo J2EE 版本,該版本具備供 Java 開發人員用來建立 Java EE 和 Web 應用程序的工具,包括一個 Java IDE、面向 Java EE、JPA、JSF、Mylyn 的工具等。
藉助 Galileo J2EE 版本,您導入了 Facebook Java 庫、將 Tomcat 配置爲一個內部服務器、添加了 Facebook 驗證功能、添加了 Google Search API,以及向 SimpleRestaurantSearch 應用程序添加了 Facebook Connect API。
Tomcat 的集成則讓您得以開發、調試、測試和部署所有 Facebook 應用程序代碼。您能夠充分利用 Galileo 發佈版來開發一個出色的 Facebook 應用程序。有了 Facebook ID、Facebook Developer Key 和 Google Search API,您就可使用隨附的代碼來測試這個 RestaurantSearch 應用程序。
adiOS