簡體   English   中英

為什么Firefox不喜歡Facebook登錄彈出窗口?

[英]Why does Firefox not like the Facebook Log In popup window?

問題:為什么Firefox不喜歡Facebook登錄彈出窗口?

設置:我正在網站上實現Facebook“ 登錄JavaScript ”功能。 我已直接復制示例代碼並將其設置在本地Web服務器上進行測試。 我從示例代碼中唯一改變的是我為我的應用程序添加了appId

故事:當我在瀏覽器中訪問代碼時,我會看到Facebook登錄按鈕。 在Chrome和Safari中,當我點擊登錄按鈕時,我會彈出一個窗口,允許我輸入我的Facebook憑據。 但是,在Firefox(v26.0)中,彈出窗口嘗試打開但隨后消失。 我會說它被Firefox阻止,但通常Firefox告訴我它阻止的東西。 在這種情況下,彈出窗口毫不客氣地消失了。 消失彈出窗口的視頻截屏。

我嘗試過的內容:我在其他瀏覽器中嘗試過此操作而沒有問題。 我確保示例代碼除了appId之外沒有改變。 我看着控制台上的消息,沒有看到任何異常。 彈出窗口使用以下URL:

// wrapped for reading convenience 
https://www.facebook.com/dialog/oauth?
    scope=
    &response_type=none
    &redirect_uri=https%3A%2F%2Fwww.facebook.com%2Fdialog%2Freturn
        %2Farbiter%3Frelation%3Dopener%26close%3Dtrue%23origin
        %3Dhttp%253A%252F%252Ftestsite.dev%253A8090%252Ff327c2a561b678
    &seen_v4_nux=false
    &state=f3da5377afecdda
    &app_id=012345678901234 // obviously obfuscated
    &display=popup

如果我將該網址粘貼到Chrome或Safari地址欄中,我會收到一個登錄對話框。 如果我將該URL粘貼到Firefox地址欄中,我會看到一個看似空白的窗口。 查看源顯示以下內容:

<script>
    (function _(a,b,c,d,e){
        document.domain='facebook.com';
        var f=window[a];
        if(f)
        if(window.location.protocol==b
        {if(!f.closed)f.require('Arbiter').inform('platform/dialog/response',d);}
        else if(f.postMessage)
        {if(!b.match(/^https?:$/)||!c.match(/\.facebook\.com$/))
        throw new Error('Invalid Origin: '+b+'//'+c);
        f.postMessage('FB_DIALOG_RESPONSE:'+JSON.stringify(d),b+'//'+c);
        }e&&window.close();})
        ("opener", "https:", "www.facebook.com", {
        "error_code":901,"error_message":"This app is in sandbox mode.
        Edit the app configuration at http:\/\/developers.facebook.com\/apps
        to make the app publicly visible.","state":"f97b48e573c33"}, true
    );
</script>

如果我從Internet斷開連接並單擊“登錄”按鈕,彈出窗口將保持不變,但除了嘗試加載的URL之外,它是完全空白的(參見上文)。

其他信息:我使用的是Mac OS X.

它也發生在我身上 - 刪除Facebook的餅干解決了它:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM