|
使用Flash Platform,您可以構(gòu)建豐富的用戶體驗(yàn)。使用Facebook Platform,您可以構(gòu)建豐富的社交體驗(yàn)。將兩者結(jié)合使用,您可以構(gòu)建出納入更具交互性、表現(xiàn)力和響應(yīng)性應(yīng)用程序社交功能的殺手級(jí)應(yīng)用程序。
您可以構(gòu)建與Facebook相整合的三種類(lèi)型的Flash Platform應(yīng)用程序:Facebook上的應(yīng)用程序、外部Web應(yīng)用程序和桌面應(yīng)用程序。
Facebook上的應(yīng)用程序是托管在您自己服務(wù)器上的Web應(yīng)用程序,但是用戶可用從Facebook網(wǎng)站上進(jìn)行訪問(wèn)。用戶可以看到內(nèi)部嵌入您的應(yīng)用程序的Facebook chrome。您可以在Facebook上訪問(wèn)應(yīng)用程序(通常通過(guò)響應(yīng)朋友的邀請(qǐng)或通過(guò)搜索應(yīng)用程序時(shí)跟蹤一個(gè)鏈接),而且 Facebook 服務(wù)器代理向您的服務(wù)器發(fā)出的請(qǐng)求并檢索應(yīng)用程序頁(yè)面(包括嵌入Flash Platform應(yīng)用程序的 HTML 和 JavaScript),以在 Facebook 網(wǎng)站上顯示。
這可以為Facebook網(wǎng)站上的用戶提供無(wú)縫體驗(yàn);用戶從不離開(kāi)Facebook網(wǎng)站。Flash Platform應(yīng)用程序使用Adobe ActionScript 3 SDK for Facebook Platform(Facebook Graph API 的包裝)反復(fù)檢索和/或發(fā)送數(shù)據(jù)至Facebook。
外部Web應(yīng)用程序同樣托管在您自己的服務(wù)器上,但是用戶通過(guò)您的 URL 而不是 Facebook 網(wǎng)絡(luò)進(jìn)行訪問(wèn)。您可以通過(guò)結(jié)合使用 Adobe ActionScript 3 SDK for Facebook Platform 和 Facebook JavaScript SDK 為應(yīng)用程序添加單點(diǎn)登錄和注銷(xiāo)功能,將 Facebook 社交特性添加到應(yīng)用程序。您可以將登錄和注銷(xiāo)按鈕添加到應(yīng)用程序,而且當(dāng)用戶登錄時(shí),她在彈出窗口中適合位置看到 Facebook 登錄和/或應(yīng)用程序授權(quán)對(duì)話框。
彈出窗口對(duì)于安全性是必要的,這樣用戶知道她正在登錄 Facebook。這種單點(diǎn)登錄 Facebook 功能可以簡(jiǎn)化您的應(yīng)用程序的登錄流程,使其可以訪問(wèn)用戶的個(gè)人資料,從而讓您個(gè)性化網(wǎng)頁(yè)(通過(guò)顯示用戶的姓名、照片等)和用戶體驗(yàn)(通過(guò)顯示朋友購(gòu)買(mǎi)的產(chǎn)品、朋友評(píng)論或意見(jiàn),向用戶的墻或朋友的新提要發(fā)布評(píng)論或意見(jiàn)等方式)。對(duì)于 Facebook.com 上的應(yīng)用程序,F(xiàn)lash Platform 應(yīng)用程序使用 Adobe ActionScript 3 SDK for Facebook Platform(Facebook Graph API 的包裝)反復(fù)檢索和/或發(fā)送數(shù)據(jù)至 Facebook。示例網(wǎng)站包括 Ben and Jerry's、RedBull Connect 和 City Search。
桌面應(yīng)用程序與外部Web應(yīng)用程序相似,但是您將 Flash Platform 應(yīng)用程序作為一個(gè) AIR 應(yīng)用程序部署到桌面,而不是將其托管到一個(gè)web 服務(wù)器。與外部網(wǎng)站一樣,桌面應(yīng)用程序使用 Adobe ActionScript 3 SDK for Facebook Platform 添加了 Facebook 中的登錄功能和社交功能。
Facebook.com 上的非 Flash Platform 應(yīng)用程序
當(dāng)用戶在Facebook上向一個(gè)應(yīng)用程序發(fā)出請(qǐng)求時(shí),F(xiàn)acebook 將一個(gè) Facebook 網(wǎng)頁(yè)返回到包含一個(gè) iFrame(您的應(yīng)用程序被加載到該 iFrame)的 Facebook chrome(參見(jiàn)圖 1)。
注:這時(shí),您可以在 Facebook.com 上創(chuàng)建 iFrame 或 FBML 應(yīng)用程序。您應(yīng)該僅創(chuàng)建 iFrame 應(yīng)用程序,因?yàn)?Facebook 正在逐步淘汰使用 FBML 應(yīng)用程序,并打算在 2010 年底停止創(chuàng)建這種應(yīng)用程序。這種對(duì)應(yīng)用程序創(chuàng)建流程的簡(jiǎn)化是 Facebook 為了消除開(kāi)發(fā) Facebook.com 應(yīng)用程序和非 Facebook.com 應(yīng)用程序之間的差別所做出的部分努力。
圖 1. Facebook.com 上的應(yīng)用程序的架構(gòu)
中文注釋?zhuān)?/p>
1.網(wǎng)頁(yè)請(qǐng)求;
2. HTML/JS 網(wǎng)頁(yè);
3.網(wǎng)頁(yè)請(qǐng)求;
4. HTTP 請(qǐng)求 API;
5. JSON;
6.在 Facebook 網(wǎng)頁(yè)的 iFrame 中顯示的 HTML/JS 網(wǎng)頁(yè);
7. JS 調(diào)用您的服務(wù)器;
8. HTTP 請(qǐng)求 API;
9. JSON;
10. JSON;
11. JS 調(diào)用 API;
12. JSON。
用戶在 Facebook 網(wǎng)站上向您的應(yīng)用程序發(fā)出請(qǐng)求;瀏覽器向 Facebook 發(fā)出 HTTP 請(qǐng)求。
iFrame HTML 標(biāo)記的 HTML/JavaScript (JS)網(wǎng)頁(yè)。
用戶的瀏覽器向您的服務(wù)器發(fā)出在 iFrame 中顯示網(wǎng)頁(yè)的請(qǐng)求。通常情況是一個(gè)應(yīng)用程序服務(wù)器頁(yè)面(如,php、ColdFusion 或 JSP),但是也可能是一個(gè) HTML 頁(yè)面。該頁(yè)面應(yīng)該包含邏輯檢查,以查看用戶是否登錄了 Facebook。當(dāng)用戶登錄 Facebook 時(shí),會(huì)話數(shù)據(jù)被存儲(chǔ)到一個(gè)名為 fbs_applicationID 的 cookie 中,其中應(yīng)用程序 ID 就是注冊(cè)到 Facebook Developer 應(yīng)用程序時(shí)分配給應(yīng)用程序的 ID。cookie 包含一個(gè)名為 access_token 的變量,您可以對(duì)其進(jìn)行檢索,然后隨著向 Facebook Graph API 發(fā)出的所有后續(xù)調(diào)用進(jìn)行傳遞。如果用戶沒(méi)有登錄 Facebook,如 cookie 無(wú) access_token 屬性,應(yīng)將瀏覽器重定向至合適的 Facebook 登錄頁(yè)面。
應(yīng)用程序服務(wù)器頁(yè)面被執(zhí)行,根據(jù)需求對(duì)數(shù)據(jù)庫(kù)或其他服務(wù)器進(jìn)行任何調(diào)用,包括使用其 Graph API 對(duì) Facebook 進(jìn)行的調(diào)用。每個(gè) API 都必須包含從會(huì)話 cookie 中檢索的訪問(wèn)記號(hào)。
Facebook將請(qǐng)求的數(shù)據(jù)作為JSON格式化數(shù)據(jù)返回至您的服務(wù)器。
您的服務(wù)器將 HTML/JS 頁(yè)面返回至在 iFrame 中顯示的用戶瀏覽器。
當(dāng)用戶與您的應(yīng)用程序進(jìn)行交互時(shí),可能發(fā)生下面的情況:
如果您的應(yīng)用程序包含新服務(wù)器端頁(yè)面鏈接,重復(fù) 3-6 步。
或者,如果您的應(yīng)用程序包含對(duì)您的服務(wù)器的異步 JavaScript 調(diào)用。這種情況下,執(zhí)行圖 1 中的步驟 7-10,其中唯一區(qū)別是 JSON 被返回至需由頁(yè)面的 JavaScript 處理的用戶瀏覽器。
另一種情況是您的頁(yè)面中的 JavaScript 代碼使用 Facebook JavaScript SDK 直接對(duì) Facebook 服務(wù)器進(jìn)行調(diào)用,而不必通過(guò)您的應(yīng)用程序服務(wù)器(圖 1 中的步驟 11-12)。
注:您也可以將一個(gè)小 FBML 標(biāo)記集放到您的應(yīng)用程序中,與 JavaScript SDK 結(jié)合使用,JavaScript SDK 掃描 DOM 以獲取標(biāo)記,然后向 Facebook 發(fā)送 API 請(qǐng)求。
Facebook.com 上的 Flash Platform 應(yīng)用程序
我們已經(jīng)了解了 Facebook.com 上非 Flash Platform 應(yīng)用程序的基礎(chǔ)知識(shí),現(xiàn)在讓我們看看如何將 Flash Platform 內(nèi)容整合到您的應(yīng)用程序中(參見(jiàn)圖 2)。
圖 2. Facebook.com 上的 Flash Platform 應(yīng)用程序
1.網(wǎng)頁(yè)請(qǐng)求;
2. HTML/JS 網(wǎng)頁(yè);
3.網(wǎng)頁(yè)請(qǐng)求;
4.在 Facebook 網(wǎng)頁(yè)的 iFrame 中顯示的 HTML/JS 網(wǎng)頁(yè);
5. Flash Platform 應(yīng)用程序請(qǐng)求(SWF);
6. SWF;
7. ActionScript 調(diào)用 API;
8. JSON;
9. ActionScript 調(diào)用您的應(yīng)用程序服務(wù)器;
10. HTTP 請(qǐng)求 API;
11. JSON;
12. AMF(或 XML、JSON 或 SOAP)
用戶在 Facebook 網(wǎng)站上對(duì)您的應(yīng)用程序發(fā)出請(qǐng)求;瀏覽器向 Facebook 服務(wù)器發(fā)出 HTTP 請(qǐng)求。
Facebook 服務(wù)器返回一個(gè)包含 Facebook 網(wǎng)站 chrome 和一個(gè) iFrame HTML 標(biāo)記的 HTML/JS 網(wǎng)頁(yè)。
用戶的瀏覽器向您的服務(wù)器發(fā)出在 iFrame 中顯示網(wǎng)頁(yè)的請(qǐng)求。向之前一樣,這是一個(gè) HTML 頁(yè)面或應(yīng)用程序服務(wù)器頁(yè)面,但是現(xiàn)在該頁(yè)面還嵌入了一個(gè) SWF 文件,F(xiàn)lash Platform 應(yīng)用程序。
您的服務(wù)器向用戶的瀏覽器返回一個(gè)在 iFrame 中顯示的 HTML/JS 頁(yè)面。該頁(yè)面必須包含邏輯檢查,以查看用戶是否登錄 Facebook,但是現(xiàn)在該檢查可以使用 Adobe ActionScript 3 SDK for Facebook Platform 在嵌入的 SWF 中完成。該應(yīng)用程序包含可以檢查訪問(wèn)記號(hào)是否存在的代碼。如果無(wú)訪問(wèn)記號(hào),您必須像以前一樣添加代碼,以將用戶重定向至 Facebook 登錄頁(yè)面。
用戶的瀏覽器向您的服務(wù)器發(fā)送另一個(gè)請(qǐng)求,這次是將 SWF 嵌入到 iFrame 中的 HTML 頁(yè)面。
您的服務(wù)器返回 SWF 文件。
當(dāng)用戶與應(yīng)用程序進(jìn)行交互時(shí),它使用 Adobe ActionScript 3 SDK for Facebook Platform 向 Facebook 發(fā)出異步調(diào)用。每個(gè) API 調(diào)用必須包含訪問(wèn)記號(hào);這是由 SDK 自動(dòng)處理的。
由于 Flash Player 的安全限制,SWF 文件僅可以對(duì) SWF 文件被服務(wù)的服務(wù)器或具有一個(gè)列出 SWF 文件出處的跨域策略文件的服務(wù)器(也就是,您的服務(wù)器)進(jìn)行數(shù)據(jù)調(diào)用。這意味著,為了使 SWF 文件可以直接向 Facebook 服務(wù)器發(fā)出調(diào)用請(qǐng)求,F(xiàn)acebook 服務(wù)器必須具有一個(gè)列出您服務(wù)器訪問(wèn)中的 SWF 文件的跨域策略文件。如果您查看 Facebook 跨域策略文件,會(huì)看到一個(gè)通配符項(xiàng),授權(quán)從所有服務(wù)器訪問(wèn) SWF 文件。
Facebook 將 JSON 數(shù)據(jù)返回應(yīng)用程序。
當(dāng)用戶與應(yīng)用程序進(jìn)行交互時(shí),它也可以使用典型的遠(yuǎn)程程序調(diào)用方法對(duì)您的服務(wù)器(以保存您的服務(wù)器上的任何數(shù)據(jù)或進(jìn)行任何其他服務(wù)器端處理)進(jìn)行異步調(diào)用。對(duì)于采用 Flex構(gòu)建的 Flash Platform 應(yīng)用程序,這包括 HTTP、web 服務(wù)和 Flash Remoting 請(qǐng)求。最快速和最小的調(diào)用是使用 Flash Remoting 而產(chǎn)生的,F(xiàn)lash Remoting 使用開(kāi)放源二進(jìn)制協(xié)議 Action Message Format (AMF)在服務(wù)器和 Flash Player 之間交換數(shù)據(jù)。
如果服務(wù)器出于任何原因需要與 Facebook 對(duì)話,它可以進(jìn)行。
您的服務(wù)器端代碼處理來(lái)自 Facebook 的結(jié)果。
您的服務(wù)器將任何數(shù)據(jù)返回至用戶瀏覽器中您的 Flash Platform 應(yīng)用程序。
外部 Flash 和 Facebook Platform web 應(yīng)用程序
外部 Flash 和 Facebook Platform web 應(yīng)用程序(參見(jiàn)圖 3)與 Facebook.com 上的web 應(yīng)用程序非常相似。兩者的主要區(qū)別是如何處理用戶登錄和應(yīng)用程序授權(quán)。不是簡(jiǎn)單地將瀏覽器重定向至 Facebook 登錄和/或授權(quán)頁(yè)面,您可以結(jié)合使用 Facebook JavaScript SDK 和 Adobe ActionScript 3 SDK for Facebook Platform,以在彈出窗口中展示 Facebook 登錄和/或授權(quán)頁(yè)面。
盡管 Facebook 登錄是用 JavaScript 處理的,您通常無(wú)須寫(xiě)任何 JavaScript 代碼;您僅調(diào)用 Adobe ActionScript 3 SDK for Facebook Platform 中的類(lèi)方法即可。內(nèi)部發(fā)生的事情是 ActionScript SDK 中的代碼調(diào)用包裝頁(yè)面中包含的 JavaScript 方法,包裝頁(yè)面反過(guò)來(lái)調(diào)用 Facebook JavaScript SDK 中的方法。Adobe ActionScript 3 SDK for Facebook Platform 包含一個(gè)名為FBJSBridge.js 的文件,該文件包含這些需要包含到您的應(yīng)用程序的包裝頁(yè)面中的 JavaScript 方法。應(yīng)用程序的包裝頁(yè)面必須包含該 JavaScript 文件以及 Facebook JavaScript SDK。
外部 Flash 和 Facebook Platform web 應(yīng)用程序
1.網(wǎng)頁(yè)請(qǐng)求;
2. HTML/JS 網(wǎng)頁(yè);
3. Flash Platform 應(yīng)用程序請(qǐng)求(SWF);
4. SWF;
5. ActionScript 調(diào)用 API;
6. JSON
7. ActionScript 調(diào)用您的應(yīng)用程序服務(wù)器;
8. HTTP 請(qǐng)求 API;
9. JSON;
10. AMF(或 XML、JSON 或 SOAP)
用戶在您的網(wǎng)站上向您的應(yīng)用程序發(fā)出請(qǐng)求;瀏覽器向您的服務(wù)器發(fā)出 HTTP 請(qǐng)求。該請(qǐng)求可以是 HTML 頁(yè)面或者任何應(yīng)用程序服務(wù)器頁(yè)面,但是下面的內(nèi)容僅針對(duì) HTML 頁(yè)面。
您的服務(wù)器返回一個(gè)嵌入您的 SWF 文件的 HTML/JS 頁(yè)面。該包裝頁(yè)面必須包含 Facebook JavaScript SDK 和 Adobe ActionScript 3 SDK for Facebook Platform 使用的 FBJSBridge。
用戶瀏覽器向您的服務(wù)器發(fā)出將 SWF 文件嵌入 HTML 頁(yè)面的請(qǐng)求。
您的服務(wù)器返回 SWF 文件。應(yīng)用程序使用 Adobe ActionScript 3 SDK for Facebook Platform 代碼(使用 FBJSBridge 和 Facebook JavaScript SDK)檢查和查看該用戶和應(yīng)用程序是否有一個(gè)當(dāng)前訪問(wèn)記號(hào)。如果沒(méi)有,它將在一個(gè)彈出瀏覽器窗口中呈現(xiàn) Facebook 登錄和/或授權(quán)網(wǎng)頁(yè)。
當(dāng)用戶與應(yīng)用程序交互時(shí),它使用 Adobe ActionScript 3 SDK for Facebook Platform 對(duì) Facebook 進(jìn)行異步調(diào)用。每個(gè) API 都必須包含訪問(wèn)記號(hào)(這是由 SDK 自動(dòng)處理的)且 Facebook 服務(wù)器必須由一個(gè)列出您的服務(wù)器訪問(wèn)中的 SWF 文件的跨域策略文件。
Facebook 將 JSON 格式化數(shù)據(jù)返回至您的應(yīng)用程序,您的應(yīng)用程序處理數(shù)據(jù)。
如果您希望保存您服務(wù)器上的任何數(shù)據(jù)或進(jìn)行任何其他服務(wù)器端處理,您的 ActionScript 代碼可以使用典型的遠(yuǎn)程程序調(diào)用方法對(duì)您的服務(wù)器進(jìn)行調(diào)用(HTTP、web 服務(wù)和 Flash Remoting 請(qǐng)求)。
如果您的服務(wù)器出于任何原因需要與 Facebook 對(duì)話,它可以進(jìn)行。
您的服務(wù)器端代碼處理來(lái)自 Facebook 的結(jié)果。
您的服務(wù)器將任何數(shù)據(jù)返回至用戶瀏覽器中您的 Flash Platform 應(yīng)用程序。
Flash 和 Facebook Platform 桌面應(yīng)用程序
最后,讓我們看一下 Flash 和 Facebook Platform 桌面應(yīng)用程序的架構(gòu)(參見(jiàn)圖 4)。桌面應(yīng)用程序與外部 Flash 和 Facebook Platform web 應(yīng)用程序非常相似,區(qū)別是用戶安裝應(yīng)用程序后 SWF 文件保存在用戶的電腦上,而且 Adobe ActionScript 3 SDK for Facebook Platform 獨(dú)立處理登錄。為了將 Flash Platform 應(yīng)用程序部署為桌面應(yīng)用程序,您需要?jiǎng)?chuàng)建一個(gè)用戶可以安裝的 AIR 應(yīng)用程序。
圖 4. Flash 和 Facebook Platform 桌面應(yīng)用程序
1.安裝 AIR 運(yùn)行時(shí)和您的 AIR 應(yīng)用程序;
2. ActionScript 調(diào)用 API;
3. JSON;
4. ActionScript 調(diào)用您的應(yīng)用程序服務(wù)器;
5. HTTP 請(qǐng)求 API;
6. JSON;
7. AMF(或 XML、JSON 或 SOAP)
用戶安裝并打開(kāi)您的 AIR 桌面應(yīng)用程序。應(yīng)用程序使用 Adobe ActionScript 3 SDK for Facebook Platform 代碼檢查和查看該用戶和應(yīng)用程序是否有一個(gè)當(dāng)前訪問(wèn)記號(hào)。如果沒(méi)有,它將在新操作系統(tǒng)窗口呈現(xiàn) Facebook 登錄和/或授權(quán)網(wǎng)頁(yè)。
您的 SWF 文件中的 ActionScript 代碼使用 Adobe ActionScript 3 SDK for Facebook Platform 對(duì) Facebook 直接進(jìn)行異步調(diào)用。訪問(wèn)記號(hào)自動(dòng)隨每個(gè) API 調(diào)用被傳遞。
Facebook 將 JSON 格式化數(shù)據(jù)返回至您的應(yīng)用程序,您的應(yīng)用程序處理數(shù)據(jù)。
如果您希望保存您的服務(wù)器上的任何數(shù)據(jù)或者進(jìn)行任何其他服務(wù)器端處理,您的 ActionScript 代碼可以使用典型的遠(yuǎn)程程序調(diào)用方法對(duì)您的服務(wù)器進(jìn)行調(diào)用(HTTP、web 服務(wù)和 Flash Remoting 請(qǐng)求)。
如果您的服務(wù)器出于任何原因需要與 Facebook 對(duì)話,它可以進(jìn)行。
您的服務(wù)器處理來(lái)自 Facebook 的結(jié)果。
您的服務(wù)器將任何數(shù)據(jù)返回至 Flash Platform 桌面應(yīng)用程序。
后續(xù)工作
本文呈現(xiàn)了Facebook.com 上的非 Flash Platform 應(yīng)用程序、Facebook.com 上的 Flash Platform 應(yīng)用程序、外部 Flash 和 Facebook Platform web 應(yīng)用程序,以及 Flash 和 Facebook Platform 桌面應(yīng)用程序的架構(gòu)圖和處理流程。
it知識(shí)庫(kù):教你構(gòu)建多樣化的Facebook應(yīng)用程序,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。