自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

教你構(gòu)建多樣化的Facebook應(yīng)用程序

開發(fā) 前端
本文介紹了使用Flash和Facebook平臺(tái)構(gòu)建的應(yīng)用程序的架構(gòu),并概括性地介紹了您可以構(gòu)建的應(yīng)用程序的類型以及這些應(yīng)用程序如何與您的服務(wù)器和Facebook進(jìn)行通信。

使用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相整合的三種類型的Flash Platform應(yīng)用程序:Facebook上的應(yīng)用程序、外部Web應(yīng)用程序和桌面應(yīng)用程序。

◆Facebook上的應(yīng)用程序是托管在您自己服務(wù)器上的Web應(yīng)用程序,但是用戶可用從Facebook網(wǎng)站上進(jìn)行訪問。用戶可以看到內(nèi)部嵌入您的應(yīng)用程序的Facebook chrome。您可以在Facebook上訪問應(yīng)用程序(通常通過響應(yīng)朋友的邀請(qǐng)或通過搜索應(yīng)用程序時(shí)跟蹤一個(gè)鏈接),而且 Facebook 服務(wù)器代理向您的服務(wù)器發(fā)出的請(qǐng)求并檢索應(yīng)用程序頁面(包括嵌入Flash Platform應(yīng)用程序的 HTML 和 JavaScript),以在 Facebook 網(wǎng)站上顯示。

這可以為Facebook網(wǎng)站上的用戶提供無縫體驗(yàn);用戶從不離開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ù)器上,但是用戶通過您的 URL 而不是 Facebook 網(wǎng)絡(luò)進(jìn)行訪問。您可以通過結(jié)合使用 Adobe ActionScript 3 SDK for Facebook Platform 和 Facebook JavaScript SDK 為應(yīng)用程序添加單點(diǎn)登錄和注銷功能,將 Facebook 社交特性添加到應(yīng)用程序。您可以將登錄和注銷按鈕添加到應(yīng)用程序,而且當(dāng)用戶登錄時(shí),她在彈出窗口中適合位置看到 Facebook 登錄和/或應(yīng)用程序授權(quán)對(duì)話框。彈出窗口對(duì)于安全性是必要的,這樣用戶知道她正在登錄 Facebook。這種單點(diǎn)登錄 Facebook 功能可以簡化您的應(yīng)用程序的登錄流程,使其可以訪問用戶的個(gè)人資料,從而讓您個(gè)性化網(wǎng)頁(通過顯示用戶的姓名、照片等)和用戶體驗(yàn)(通過顯示朋友購買的產(chǎn)品、朋友評(píng)論或意見,向用戶的墻或朋友的新提要發(fā)布評(píng)論或意見等方式)。對(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)頁返回到包含一個(gè) iFrame(您的應(yīng)用程序被加載到該 iFrame)的 Facebook chrome(參見圖 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)建流程的簡化是 Facebook 為了消除開發(fā) Facebook.com 應(yīng)用程序和非 Facebook.com 應(yīng)用程序之間的差別所做出的部分努力。

Facebook.com 上的應(yīng)用程序的架構(gòu) 
圖 1. Facebook.com 上的應(yīng)用程序的架構(gòu)

中文注釋:

1. 網(wǎng)頁請(qǐng)求;

2. HTML/JS 網(wǎng)頁;

3. 網(wǎng)頁請(qǐng)求;

4. HTTP 請(qǐng)求 API;

5. JSON;

6. 在 Facebook 網(wǎng)頁的 iFrame 中顯示的 HTML/JS 網(wǎng)頁;

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)頁。

◆用戶的瀏覽器向您的服務(wù)器發(fā)出在 iFrame 中顯示網(wǎng)頁的請(qǐng)求。通常情況是一個(gè)應(yīng)用程序服務(wù)器頁面(如,PHP、ColdFusion 或 JSP),但是也可能是一個(gè) HTML 頁面。該頁面應(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)行傳遞。如果用戶沒有登錄 Facebook,如 cookie 無 access_token 屬性,應(yīng)將瀏覽器重定向至合適的 Facebook 登錄頁面。

◆應(yīng)用程序服務(wù)器頁面被執(zhí)行,根據(jù)需求對(duì)數(shù)據(jù)庫或其他服務(wù)器進(jìn)行任何調(diào)用,包括使用其 Graph API 對(duì) Facebook 進(jìn)行的調(diào)用。每個(gè) API 都必須包含從會(huì)話 cookie 中檢索的訪問記號(hào)。

◆Facebook將請(qǐng)求的數(shù)據(jù)作為JSON格式化數(shù)據(jù)返回至您的服務(wù)器。

◆您的服務(wù)器將 HTML/JS 頁面返回至在 iFrame 中顯示的用戶瀏覽器。

當(dāng)用戶與您的應(yīng)用程序進(jìn)行交互時(shí),可能發(fā)生下面的情況:

◆如果您的應(yīng)用程序包含新服務(wù)器端頁面鏈接,重復(fù) 3-6 步。

◆或者,如果您的應(yīng)用程序包含對(duì)您的服務(wù)器的異步 JavaScript 調(diào)用。這種情況下,執(zhí)行圖 1 中的步驟 7-10,其中唯一區(qū)別是 JSON 被返回至需由頁面的 JavaScript 處理的用戶瀏覽器。

◆另一種情況是您的頁面中的 JavaScript 代碼使用 Facebook JavaScript SDK 直接對(duì) Facebook 服務(wù)器進(jìn)行調(diào)用,而不必通過您的應(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)求。

#p#

Facebook.com 上的 Flash Platform 應(yīng)用程序

我們已經(jīng)了解了 Facebook.com 上非 Flash Platform 應(yīng)用程序的基礎(chǔ)知識(shí),現(xiàn)在讓我們看看如何將 Flash Platform 內(nèi)容整合到您的應(yīng)用程序中(參見圖 2)。

Facebook.com 上的Flash Platform 應(yīng)用程序 
圖 2. Facebook.com 上的 Flash Platform 應(yīng)用程序

1. 網(wǎng)頁請(qǐng)求;

2. HTML/JS 網(wǎng)頁;

3. 網(wǎng)頁請(qǐng)求;

4. 在 Facebook 網(wǎng)頁的 iFrame 中顯示的 HTML/JS 網(wǎng)頁;

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)頁。

◆用戶的瀏覽器向您的服務(wù)器發(fā)出在 iFrame 中顯示網(wǎng)頁的請(qǐng)求。向之前一樣,這是一個(gè) HTML 頁面或應(yīng)用程序服務(wù)器頁面,但是現(xiàn)在該頁面還嵌入了一個(gè) SWF 文件,F(xiàn)lash Platform 應(yīng)用程序。

◆您的服務(wù)器向用戶的瀏覽器返回一個(gè)在 iFrame 中顯示的 HTML/JS 頁面。該頁面必須包含邏輯檢查,以查看用戶是否登錄 Facebook,但是現(xiàn)在該檢查可以使用 Adobe ActionScript 3 SDK for Facebook Platform 在嵌入的 SWF 中完成。該應(yīng)用程序包含可以檢查訪問記號(hào)是否存在的代碼。如果無訪問記號(hào),您必須像以前一樣添加代碼,以將用戶重定向至 Facebook 登錄頁面。

◆用戶的瀏覽器向您的服務(wù)器發(fā)送另一個(gè)請(qǐng)求,這次是將 SWF 嵌入到 iFrame 中的 HTML 頁面。

◆您的服務(wù)器返回 SWF 文件。

◆當(dāng)用戶與應(yīng)用程序進(jìn)行交互時(shí),它使用 Adobe ActionScript 3 SDK for Facebook Platform 向 Facebook 發(fā)出異步調(diào)用。每個(gè) API 調(diào)用必須包含訪問記號(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ù)器訪問中的 SWF 文件的跨域策略文件。如果您查看 Facebook 跨域策略文件,會(huì)看到一個(gè)通配符項(xiàng),授權(quán)從所有服務(wù)器訪問 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 使用開放源二進(jìn)制協(xié)議 Action Message Format (AMF) 在服務(wù)器和 Flash Player 之間交換數(shù)據(jù)。

◆如果服務(wù)器出于任何原因需要與 Facebook 對(duì)話,它可以進(jìn)行。

◆您的服務(wù)器端代碼處理來自 Facebook 的結(jié)果。

◆您的服務(wù)器將任何數(shù)據(jù)返回至用戶瀏覽器中您的 Flash Platform 應(yīng)用程序。

#p#

外部 Flash 和 Facebook Platform web 應(yīng)用程序

外部 Flash 和 Facebook Platform web 應(yīng)用程序(參見圖 3)與 Facebook.com 上的 web 應(yīng)用程序非常相似。兩者的主要區(qū)別是如何處理用戶登錄和應(yīng)用程序授權(quán)。不是簡單地將瀏覽器重定向至 Facebook 登錄和/或授權(quán)頁面,您可以結(jié)合使用 Facebook JavaScript SDK 和 Adobe ActionScript 3 SDK for Facebook Platform,以在彈出窗口中展示 Facebook 登錄和/或授權(quán)頁面。盡管 Facebook 登錄是用 JavaScript 處理的,您通常無須寫任何 JavaScript 代碼;您僅調(diào)用 Adobe ActionScript 3 SDK for Facebook Platform 中的類方法即可。內(nèi)部發(fā)生的事情是 ActionScript SDK 中的代碼調(diào)用包裝頁面中包含的 JavaScript 方法,包裝頁面反過來調(diào)用 Facebook JavaScript SDK 中的方法。Adobe ActionScript 3 SDK for Facebook Platform 包含一個(gè)名為FBJSBridge.js 的文件,該文件包含這些需要包含到您的應(yīng)用程序的包裝頁面中的 JavaScript 方法。應(yīng)用程序的包裝頁面必須包含該 JavaScript 文件以及 Facebook JavaScript SDK。

外部 Flash 和 Facebook Platform web 應(yīng)用程序 
外部 Flash 和 Facebook Platform web 應(yīng)用程序

1. 網(wǎng)頁請(qǐng)求;

2. HTML/JS 網(wǎng)頁;

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īng)用程序服務(wù)器頁面,但是下面的內(nèi)容僅針對(duì) HTML 頁面。

◆您的服務(wù)器返回一個(gè)嵌入您的 SWF 文件的 HTML/JS 頁面。該包裝頁面必須包含 Facebook JavaScript SDK 和 Adobe ActionScript 3 SDK for Facebook Platform 使用的 FBJSBridge。

◆用戶瀏覽器向您的服務(wù)器發(fā)出將 SWF 文件嵌入 HTML 頁面的請(qǐng)求。

◆您的服務(wù)器返回 SWF 文件。應(yīng)用程序使用 Adobe ActionScript 3 SDK for Facebook Platform 代碼(使用 FBJSBridge 和 Facebook JavaScript SDK)檢查和查看該用戶和應(yīng)用程序是否有一個(gè)當(dāng)前訪問記號(hào)。如果沒有,它將在一個(gè)彈出瀏覽器窗口中呈現(xiàn) Facebook 登錄和/或授權(quán)網(wǎng)頁。

◆當(dāng)用戶與應(yīng)用程序交互時(shí),它使用 Adobe ActionScript 3 SDK for Facebook Platform 對(duì) Facebook 進(jìn)行異步調(diào)用。每個(gè) API 都必須包含訪問記號(hào)(這是由 SDK 自動(dòng)處理的)且 Facebook 服務(wù)器必須由一個(gè)列出您的服務(wù)器訪問中的 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ù)器端代碼處理來自 Facebook 的結(jié)果。

◆您的服務(wù)器將任何數(shù)據(jù)返回至用戶瀏覽器中您的 Flash Platform 應(yīng)用程序。

#p#

Flash 和 Facebook Platform 桌面應(yīng)用程序

***,讓我們看一下 Flash 和 Facebook Platform 桌面應(yīng)用程序的架構(gòu)(參見圖 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)用程序。

Flash 和 Facebook Platform 桌面應(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)

◆用戶安裝并打開您的 AIR 桌面應(yīng)用程序。應(yīng)用程序使用 Adobe ActionScript 3 SDK for Facebook Platform 代碼檢查和查看該用戶和應(yīng)用程序是否有一個(gè)當(dāng)前訪問記號(hào)。如果沒有,它將在新操作系統(tǒng)窗口呈現(xiàn) Facebook 登錄和/或授權(quán)網(wǎng)頁。

◆您的 SWF 文件中的 ActionScript 代碼使用 Adobe ActionScript 3 SDK for Facebook Platform 對(duì) Facebook 直接進(jìn)行異步調(diào)用。訪問記號(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ù)器處理來自 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)圖和處理流程。

【編輯推薦】

  1. Twitter應(yīng)用軟件過萬 仍難追趕Facebook
  2. 來自Facebook等成功Web開發(fā)者的建議分享
  3. Flex項(xiàng)目與Flash產(chǎn)品的開發(fā)前必須考慮5個(gè)因素 
責(zé)任編輯:王曉東 來源: infoQ
相關(guān)推薦

2015-10-09 11:27:36

綜合布線布線技術(shù)

2016-08-12 09:24:33

開源多樣化亮點(diǎn)

2010-07-29 17:00:36

Flex餅圖

2024-06-06 17:32:41

2017-03-28 08:47:33

圖像識(shí)別技術(shù)

2013-02-22 11:39:27

BGP控制方式路由流向

2015-03-23 16:42:06

2011-06-22 09:54:13

網(wǎng)絡(luò)技術(shù)虛擬化網(wǎng)絡(luò)OpenFlow

2021-02-05 23:18:55

云計(jì)算IT技術(shù)

2012-08-01 14:12:45

IBMdW

2017-05-16 15:00:25

存儲(chǔ)云端解決方案

2009-03-10 19:07:40

Windows MobFaceBook

2011-06-27 09:23:26

IntelHPC高性能計(jì)算

2015-01-07 09:42:55

5G25G以太網(wǎng)

2015-12-11 22:40:10

大數(shù)據(jù)OpenPOWERPOWER8

2012-04-19 09:34:21

ibmdw

2011-03-14 15:14:10

AzureFacebook營銷式應(yīng)用程序

2011-03-14 14:47:50

2017-11-09 13:41:30

2013-01-23 09:33:29

交換機(jī)設(shè)備故障
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)