Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么Firefox不喜欢Facebook登录弹出窗口?_Javascript_Facebook_Firefox_Facebook Javascript Sdk - Fatal编程技术网

Javascript 为什么Firefox不喜欢Facebook登录弹出窗口?

Javascript 为什么Firefox不喜欢Facebook登录弹出窗口?,javascript,facebook,firefox,facebook-javascript-sdk,Javascript,Facebook,Firefox,Facebook Javascript Sdk,问题:为什么Firefox不喜欢Facebook登录弹出窗口 设置:我正在网站上实现Facebook“”功能。我直接复制了示例代码,并将其设置在本地web服务器上进行测试。与示例代码不同的是,我为我的应用程序添加了appId 故事:当我在浏览器中访问代码时,正如预期的那样,我会看到一个Facebook登录按钮。在Chrome和Safari中,当我单击“登录”按钮时,会出现一个弹出窗口,允许我输入Facebook凭据。然而,在Firefox(v26.0)中,弹出窗口试图打开,但随后消失。我会说它被

问题:为什么Firefox不喜欢Facebook登录弹出窗口

设置:我正在网站上实现Facebook“”功能。我直接复制了示例代码,并将其设置在本地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
如果我将该URL粘贴到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>

(功能(a、b、c、d、e){
document.domain='facebook.com';
var f=窗口[a];
如果(f)
if(window.location.protocol==b
{如果(!f.closed)f.require('仲裁者')。通知('platform/dialog/response',d);}
else if(f.postMessage)
{如果(!b.match(/^https?:$/)| | |!c.match(/\.facebook\.com$/))
抛出新错误('无效原点:'+b+'/'+c);
f、 postMessage('FB_DIALOG_RESPONSE:'+JSON.stringify(d),b+'/'+c);
}e&&window.close();})
(“开场白”,“https:”,“www.facebook.com”{
“错误代码”:901,“错误消息”:“此应用程序处于沙箱模式。
在http:\/\/developers.facebook.com\/apps上编辑应用程序配置
要使应用程序公开可见,请执行以下操作。“,“状态”:“f97b48e573c33”},true
);
如果我断开与Internet的连接并单击“登录”按钮,弹出窗口将保持不变,但完全为空,而不是它试图加载的URL(见上文)


其他信息:我正在使用Mac OS X。

这也发生在我身上-删除Facebook的cookies解决了它:)

我两年前就遇到了这个问题,记不起我的问题是什么。这与将
localhost
注册为有效域或类似的行为不相关吗?我确实在使用localhost时遇到问题,因此我使用的是在Facebook应用程序设置中注册的自定义域。看起来关闭弹出窗口的可能不是Firefox。也许是Facebook的代码关闭了它。试试看有什么东西被发送到弹出窗口。