2012-02-29 192 views
14

我從'Facebook for Websites'Facebook開發者頁面複製了下面的HTML,並用我的應用程序ID替換了APPID。我把這個頁面放在我的開發Web服務器上。如果我導航到頁面,它呈現登錄按鈕就好了。但點擊登錄按鈕後,會打開Facebook登錄頁面,顯示「發生錯誤,請稍後再試。」Facebook oauth對話框顯示「發生錯誤,請稍後再試。」

我必須缺少一些基本的東西。有任何想法嗎?

<html> 
<head> 
    <title>My Facebook Login Page</title> 
</head> 
<body> 
    <div id="fb-root"></div> 
    <script> 
    window.fbAsyncInit = function() { 
     FB.init({ 
     appId  : 'APPID', 
     status  : true, 
     cookie  : true, 
     xfbml  : true, 
     oauth  : true // removed a comma after 'true' as it generates a script error 
     }); 
    }; 
    (function(d){ 
     var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
     js = d.createElement('script'); js.id = id; js.async = true; 
     js.src = "//connect.facebook.net/en_US/all.js"; 
     d.getElementsByTagName('head')[0].appendChild(js); 
    }(document)); 
    </script> 
    <div class="fb-login-button">Login with Facebook</div> 
</body> 
</html> 

進一步的調查顯示,它在Chrome,Firefox和Safari中正常工作,並在IE9中失敗。

這是它關係到Chrome瀏覽器中的URL,它工作正常: https://www.facebook.com/login.php?api_key=255367907914&skip_api_login=1&display=popup&cancel_url=https%3A%2F%2Fs-static.ak.fbcdn.net%2Fconnect%2Fxd_proxy.php%3Fversion%3D3%26error_reason%3Duser_denied%26error%3Daccess_denied%26error_description%3DThe%2Buser%2Bdenied%2Byour%2Brequest.%23cb%3Df16c026dc%26origin%3Dhttp%253A%252F%252Fsami.test.eu%253A81%252Ff314f6d52%26relation%3Dopener%26transport%3Dpostmessage%26frame%3Df48d09da8&fbconnect=1&next=https%3A%2F%2Fwww.facebook.com%2Fdialog%2Fpermissions.request%3F_path%3Dpermissions.request%26app_id%3D255367907914%26redirect_uri%3Dhttps%253A%252F%252Fs-static.ak.fbcdn.net%252Fconnect%252Fxd_proxy.php%253Fversion%253D3%2523cb%253Df16c026dc%2526origin%253Dhttp%25253A%25252F%25252Fsami.test.eu%25253A81%25252Ff314f6d52%2526relation%253Dopener%2526transport%253Dpostmessage%2526frame%253Df48d09da8%26sdk%3Djoey%26display%3Dpopup%26response_type%3Dtoken%252Csigned_request%26domain%3Dsami.test.eu%26fbconnect%3D1%26from_login%3D1%26client_id%3D255367907914&rcount=1

這是IE9的URL,這導致錯誤: https://www.facebook.com/dialog/oauth?api_key=255367907914&app_id=255367907914&client_id=255367907914&display=popup&domain=sami.test.eu&locale=en_US&origin=1&redirect_uri=https%3A%2F%2Fs-static.ak.fbcdn.net%2Fconnect%2Fxd_proxy.php%3Fversion%3D3%23cb%3Df14fd3a0495986%26origin%3Dhttp%253A%252F%252Fsami.test.eu%252Ff2d9bfc6aa24134%26relation%3Dopener%26transport%3Dflash%26frame%3Df2539c36bc13734&response_type=token%2Csigned_request&sdk=joey

+0

它是你運行的實際代碼嗎?你沒有忘記指定你的應用程序ID嗎? – zerkms 2012-02-29 22:32:52

+0

是的,我用我的實際應用程序ID替換了APPID,從Facebook應用程序頁面複製粘貼。如果這適用於其他人,那麼我的應用程序可能有問題。但是,錯誤消息根本沒有幫助。 – Sami 2012-02-29 22:48:00

+0

另一條信息:它在Chrome,Firefox和Safari中正常工作,即按照預期獲得Facebook登錄頁面。但它在IE9上失敗,我收到「發生錯誤,請稍後再試。」 – Sami 2012-02-29 22:55:34

回答

1

我得到這個錯誤時,將APPID不正確。仔細檢查你的AppID。

+0

這就是我在嘗試其他瀏覽器之前所懷疑的。由於它適用於Chrome,Firefox和Safari,但在IE9上失敗,我假設我的AppID很好。該問題看起來是IE9特定的。 – Sami 2012-02-29 22:58:46

4

我花了一些時間進行調試會議後就想通了。

我當時在使用虛擬域來開發我的應用程序。我有我的本地主機文件中的域映射到127.0.0.1(我這樣做是因爲與本文不相關的原因)。

原來,當我導航到Facebook登錄頁面時,IE將URL中的127.0.0.1作爲返回URL傳遞給Facebook。 127.0.0.1與我在Facebook中爲我的應用程序配置的URL不匹配,因此登錄頁面顯示「發生錯誤」消息(如果得到正確的錯誤消息本應該不錯)。

其他瀏覽器發送我的假域作爲返回URL,並且他們沒有問題。

無論如何,我停止使用虛假域名,並確保域名與Facebook中的配置完全匹配,現在問題消失了。

感謝您的回覆。 zerkms的比較URL的建議最終導致瞭解決方案。

0

我得到了同樣的問題,但這裏的域名可能是問題。當我們創建Facebook appid時,在本節「使用Facebook登錄的網站」中,我們需要正確指定「網站URL」。意思是當我們在本地測試應用程序時,我們需要提及url爲「http:// localhost:// {portnumber}」,如果我們在服務器上運行,我們需要指定像「http:// mywebsite」這樣的實際URL。 COM」。

4

已解決(至少對我而言):我沒有在Facebook應用程序設置中配置的「帶Facebook登錄的網站」,因爲我做了一個頁面選項卡應用程序。沒有外部網站。不幸的是,我在應用程序周圍沒有使用facebook iframe進行調試 - >所以這就是原因。

爲了擺脫我在「使用Facebook登錄的網站」中填寫的錯誤,並在應用設置中填寫了「應用域名」輸入。

奇怪的是,這個問題只發生在IE中!

+0

這可能會幫我解決。看着明顯的:) – 2012-09-08 23:19:19

1

我得到這個,因爲我的本地沒有配置SSL,所以https://mywebsite.in/。沒有工作。 然後在我的應用程序中,我啓用了沙箱模式並刪除了安全網址,如安全畫布網址。

注意:當您啓用沙箱模式時,只有應用程序創建者可以訪問Facebook登錄。其他用戶將在以下消息

An error occurred. Please try again later. 
+0

這修復了我,謝謝! – 2013-03-25 09:25:43

+0

我的榮幸米克 – 2013-03-26 07:07:56

2

請確保您沒有(待定)作爲應用程序設置中的開發人員/管理員。

0

更新的解決方案:在您的FB應用程序配置中,您需要添加一個網站平臺以及您網站的網址集。然後,您可以將我設置的應用域添加到我們網站的基本域(例如對於像http://www.mycoolwebsite.com的URL,只需使用mycoolwebsite.com)。

New FB Settings Screenshot

重要:爲了這個工作,你需要使用你的應用程序的URL的子域本地開發。您可以通過在您的開發計算機上修改您的主機文件以便使用您網站上不存在的子域名(例如local.mycoolwebsite.com)輕鬆完成此操作。如果您不熟悉如何執行此操作,請爲您的平臺(例如mac/windows)編輯「編輯hosts文件」。

相關問題