2011-11-20 62 views
0

我正在嘗試開發在瀏覽器(但不在Web服務器上)上運行的Facebook桌面應用程序。所以嚴格來說,我正在運行一個不在任何域中的獨立網頁。我需要爲此找到合適的登錄解決方案。Facebook桌面應用程序(在瀏覽器上) - 無需在網絡服務器上託管即可登錄

目前,Facebook身份驗證必須重定向到另一個URI--對我而言,問題在於,由於跨域訪問問題,我無法從此重定向頁面(對話框/ poup)獲取訪問令牌。有沒有辦法穿過它?另外,由於我在文件路徑(c:/wamp/www/facebook.html)而不是Web服務器上運行頁面,因此在對話框中完成身份驗證後,不會觸發「auth.login」事件。這是否也是預期的行爲?

任何幫助,將不勝感激。謝謝!

回答

0

http://localhost使用本地網絡服務器和服務器... Windows(Abyss)以及Unix(thttpd)都有輕量級的。

編輯:它似乎不可能使用文件:/ /網址。我想這個網頁:

<html> 
<head> 
<script> 
function fbLogin() { 
    if (window.location.hash) { 
     alert("Access token is: "+window.location.hash); 
    } else { 
     window.location.href = "https://www.facebook.com/dialog/oauth?" 
     + "client_id=54715426813&redirect_uri=file:///D:/Herby/Desktop/page.html&response_type=token"; 
    } 
} 
</script> 
</head> 
<body onLoad="fbLogin();"> 
</body> 
</html> 

,並誓言對話框說

API Error Code: 191 
API Error Description: The specified URL is not owned by the application 
Error Message: Invalid redirect_uri: Given URL is not permitted by the application configuration. 

這意味着,你必須在文件中填寫:在你///類型的URL應用程序配置。我嘗試過,但它說我使用的協議必須是http或https。所以,再見在Facebook上的文件://

真正的桌面應用程序的唯一的可能性是包括使用真實的HTTP URL並以某種方式(通過微小的嵌入式服務器或某種鉤和嘲諷的)網絡控制能夠使用這樣的URL(或者,正如在其他答案中指出的那樣,您可以不使用重定向url並將其重定向到默認的Facebook結果頁面)。但是,這不是您只能在瀏覽器中執行的操作。

+0

謝謝,但要求不是要使用任何網絡服務器。如果我想使用它,那將非常簡單,不是嗎? – rizter

+0

你根本不需要使用dialog/popus。我不知道facebook會怎樣問題,但使用客戶端流程(http://developers.facebook.com/docs/authentication/)似乎很容易獲得訪問令牌,如果url = file :// ...的作品。但我沒有嘗試。在這裏沒有跨域問題應該發揮作用,你會在url的片段部分獲得訪問令牌。 – 2011-11-20 11:17:34

+0

herby,謝謝。我已經通過了文檔,我正在嘗試相同的客戶端工作流程。我不確定你的意思是「根本不需要使用對話框/彈出窗口,我還有什麼其他選擇?客戶端工作流似乎要求使用OAuth對話框,或者我錯過了什麼?如果我打開對話框/彈出,它在另一個域中,我不能從我的開啓者控制 – rizter

0

閱讀上FB驗證:http://developers.facebook.com/docs/authentication/

如果您的應用程序能夠讀取iframe網址(如空氣基於應用程序),那麼你可以依賴於使用的桌面應用程序的驗證流程和讀取憑據從響應Facebook託管的網址:https://www.facebook.com/connect/login_success.html#access_token=...

+0

Facebook不允許用於OAuth對話框的iframe。要求是在常規瀏覽器中運行它,而不是Adobe AIR或.NET環境中的嵌入式瀏覽器。有沒有辦法在瀏覽器中關閉跨域檢查? – rizter

+0

它不允許它,但你仍然可以做到,特別是在AIR中。我不認爲要求每個用戶關閉xdomain安全性是明智的。 –

+0

艾哈邁德,謝謝。但正如我前面指出的那樣,我必須要求我試圖使其在像Chrome/Firefox這樣的常規瀏覽器中工作。我不確定它是否可能,但那是我現在要檢查的內容 – rizter

相關問題