2010-09-12 76 views
0

Facebook連接有一個最近的錯誤,導致權限彈出窗口不關閉並刷新父窗口,因爲它設計的目的。相反,在用戶批准後,它會嘗試直接在彈出窗口中加載該頁面,這是一種非常糟糕的用戶體驗,並且會嚴重影響我們的註冊。您可以通過使用Facebook Connect我們的網站註冊看到錯誤:http://alltrails.comFacebook連接錯誤 - JavaScript刷新

頁面後用戶的URL連接,Facebook的連接不正確的權限加載彈出窗口的形式爲:

http://alltrails.com/?installed=1&session={"session_key":"2.Gu0duOqdElNjXRac5wnetw__.3600.1283799600-1486832834","uid":1486832834,"expires":1283799600,"secret":"tKFaEgBTF9RJeuQZfYUSCw__","base_domain":"alltrails.com","sig":"a8dd9f75418b530ae6c3d935e14274c4"} 

我希望有人比我更擅長JavaScript,可以建議一個簡單的代碼片段,我們可以添加到我們的主頁,只有當頁面URL包含'?installed = 1'時纔會被調用,並執行以下操作允許Facebook Connect提供相同的用戶體驗:

  1. 關閉的權限彈出窗口
  2. 裝入適當的頁面http://alltrails.com/register/facebook在原來的父窗口

我試圖做到這一堆不同的方式,但還沒有任何運氣得到它能正常工作。在此先感謝您的幫助!

+0

嗨 - 即時通訊具有相同的問題(http://stackoverflow.com/questions/3697867/facebook-connect-edge-case-connect-with-facebook-when-already-logged-in)。只有在用戶已經通過Facebook驗證後纔會發生,並且他們點擊「連接Facebook」按鈕。它看起來像JavaScript Auth/OAuth圖形API世界正在發生衝突。我討厭Facebook。 – RPM1984 2010-09-13 06:11:23

+0

C. - 順便說一句 - 我們確定這是一個Facebook的錯誤?你有錯誤參考嗎? – RPM1984 2010-09-13 06:28:10

回答

1

這是一個(未經證實的)錯誤。

http://bugs.developers.facebook.net/show_bug.cgi?id=12260

希望它獲得更多的選票,這樣會將它固定 - 投票的人!

在此期間,我(試圖)採用下面的「創意的解決辦法」:

  1. 添加邏輯到我的Default.aspx頁面,以檢測它們重定向到彈出框中的URL。
  2. 重定向到我的頁面FacebookInboundAuthorization.aspx,保留查詢字符串。
  3. 加載該頁面時,註冊一些JavaScript以關閉彈出窗口並手動觸發我的按鈕的「onlogin」事件處理程序。

編輯 - 另一種可能的解決方案

所以我做這樣的事情的按鈕,「從Facebook斷開」,這也有類似的錯誤,這已經在FBC從1天如果用戶已經登錄,並且您單擊「Disconnect from Facebook」按鈕,「onlogin」處理程序不會被觸發。

所以我最終做的是用我自己的常規錨標籤來替換Facebook Disconnect按鈕,模仿Facebook的CSS。這樣我可以完全控制點擊事件(激發我想要的功能)。因此,這個原則可以(理論上)應用於這個當前的錯誤。

也就是說,你在客戶端做FB.Init後:使用FB.Connect

  1. 檢查FB權威性的地位。ifUserConnected
  2. 如果用戶已連接,請隱藏常規FB:Login按鈕,並顯示您的「假」FB登錄按鈕。作爲onclick事件,從常規FB:Login按鈕複製到「onlogin」功能。

您的假FB登錄按鈕將是一個常規錨定標記,同樣的CSS應用於常規的FB登錄按鈕。因此,基本上,如果用戶已經連接,我們並不真的需要FB的干預進行身份驗證,我們可以做任何我們想要的(請求perms,重定向等)。

這應該工作。

不幸的是,我需要處理更高優先級的事情,但這聽起來像是您的首要任務。

所以給一個去,希望它有幫助。

+0

@Downvoter - 這個問題的答案是「它的Facebook bug」 - 我提供了一個鏈接。對我而言,這是有幫助的,因此不應該被低估。 – RPM1984 2010-09-13 12:39:02

+0

@ RPM1984 - 您可以提供您在FacebookInboundAuthorization.aspx中使用的JavaScript來關閉彈出窗口,然後在父窗口中觸發事件處理程序?這基本上是我無法想象如何去做的。謝謝! – 2010-09-14 15:18:35

+0

@Russell C - 不幸的是我已經嘗試過,但似乎無法得到我的onlogin回調函數的句柄。事實上FB.init發生在頁面加載後並不容易。我正在考慮不採取上述「解決方法」,因爲他們已經確認了這個錯誤,並且正在修復它,所以任何努力都基本上被浪費了。 – RPM1984 2010-09-14 21:56:15