2010-05-03 94 views
9

對於有互聯網的中間件系統(其工作在set-top box)我想開發一個原始的Facebook接口,用戶可以輸入他們的用戶名和密碼,顯示他們的最新通知,消息和其他隨便通過使用最近的Facebook Graph API在電視屏幕上的東西。沒有瀏覽器的Facebook Open Graph

這個中間件程序使用Java ME來運行程序(如這個簡單的Facebook應用程序),它可以連接到互聯網,但它沒有一個真正的網絡瀏覽器。沒有瀏覽器,它可以連接到任何網址來檢索JSON響應,但我不確定如何在沒有真實瀏覽器的情況下實現身份驗證。

在這種情況下,Facebook認證有可能嗎?如果你這麼認爲,你會建議什麼方法?

感謝

回答

0

根據這個文件「Desktop Application Authentication」我不相信你期望的結果是可能的:

Facebook的OAuth的實現不包括明確的桌面應用程序的支持。但是,如果您的桌面應用程序可以嵌入Web瀏覽器,則可以使用JavaScript客戶端使用的相同OAuth用戶代理流程輕鬆地將Facebook支持添加到您的應用程序。

但是,某些供應商顯然可以這樣做,因爲微軟的Xbox 360 Facebook應用程序完全符合您的要求。我有興趣看看有沒有人爲了做到這一點而挖出任何API,Facebook並不希望他們的最明顯的文檔。

+0

微軟在Facebook中擁有一定比例的股份。另一個主要控制檯(據稱)也有一個專用的sdk - 但我沒有看到它。 – 2011-03-01 21:04:46

+0

@Chris,我懷疑Facebook的潛在收益與微軟的[1.6%的股份](http://en.wikipedia.org/wiki/Facebook#History) – Nicole 2011-03-01 21:10:26

0

這不是一個答案,但我試圖做同樣的事情。看看這傢伙的博客,它使用另一臺服務器的代理請求: cory wiles blog

如果你看着辦吧請在這裏發表了詳細的解答,所以我可以做它.. :)

0

我認爲這是可能的雖然它非常複雜,並受Facebook界面突然變化的影響。它可能會破壞你和Facebook之間的協議。

你所做的就是模仿Facebook。

你必須建立一個Facebook應用程序的一條路徑。一旦你獲得了用戶的授權,你可以使用Graph API。

您需要Facebook登錄過程和授權過程。 http/https請求和響應中有一些捕獲工具。分析它們,包括標題和正文。

一旦你知道授權機制,你可以用你自己的替換它。之後的一切都在Graph API上。

另一種途徑是模擬Facebook登錄和消息和通知過程。捕獲和分析是必要的。

0

在過去,我使用了一個名爲screen-scraper(完全披露:我曾經在那裏工作)的工具來自動登錄到Facebook。基本上,它模仿瀏覽器會話;它允許你設置會話變量(即用戶名,密碼),然後將其提交給Facebook,就像用戶在瀏覽器中提交它們一樣。

您可能無法在機頂盒環境中使用屏幕刮板(儘管它是基於Java的,因此它可能會起作用)。即使不這樣做,您也可以在java中實現類似的策略,使得HTTP調用瀏覽器可以加載登錄頁面並提交用戶的憑證。要確保用戶的信息安全,請確保您使用的任何HTTP客戶端庫支持HTTPS。

代理工具和擴展如CharlesFiddler2,Firebug,Chrome的開發工具等有助於準確瞭解瀏覽器在請求中發送給服務器的內容。

3

Facebook爲值得信賴的合作伙伴提供私人授權API,以從用戶名/密碼獲取OAuth 2令牌。

一個更復雜的方法是做類似Netflix的是如何錄取的設備的東西:

  1. 設備調用服務器以獲取代碼
  2. 設備會顯示在屏幕上的代碼,並引導用戶去到URL服務器上並輸入代碼
  3. 服務器重定向用戶到Facebook和取得的OAuth令牌,用戶告知要回去設備
  4. 設備調用服務器代碼,並獲得OAuth憑證
  5. 設備現在可以代表用戶直接撥打電話
+0

有關。太: 您的設備的每個實例都有某種序列號;讓用戶登錄到您的網站,並將登錄與他們擁有的設備的序列號關聯起來,然後讓設備聯繫您自己的網站併爲其提供必要的身份驗證信息以訪問Facebook API – Igy 2011-08-26 21:50:43

+0

我用這種方式,而我正在編寫一個智能電視的Facebook客戶端。 – siniradam 2013-01-10 08:57:00