Facebook JS SDK - 登录弹出窗口不会关闭

Mat*_*rym 5 javascript facebook facebook-graph-api facebook-javascript-sdk

下面将登录事件绑定到div.如果我点击它,我会得到预期的js sdk登录弹出窗口.但是,在使用我的凭据提交弹出窗口后,弹出窗口变为白色并且不会关闭.如果我刷新页面,我已登录,但它不会像您预期的那样自动刷新.有人有任何想法吗?


编辑:相同的代码(具有差异应用程序ID和域凭据)在不同的服务器上工作.这让我相信我的问题可能与下面的代码无关.是否有任何应用程序或服务器配置可能导致登录弹出窗口无法关闭/更新?


<!DOCTYPE html>
<html class="no-js ie ie10plus" lang="en" xmlns:fb="http://www.facebook.com/2008/fbml">
    <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# object: http://ogp.me/ns/object#">
        <script src="http://ajax.aspnetcdn.com/ajax/modernizr/modernizr-2.0.6-development-only.js"></script>
    </head>
    <body>
        <div id="fb-root"></div>
        <div id="fbLogin">Test login link</div>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" ></script> 
        <script>               
              var fbmm = {};

              window.fbAsyncInit = function() {
                FB.init({
                  appId      : '339910146083688', // App ID
                  cookie: true, 
                  xfbml: true,
                  status: true,
                  oauth: true
                });

                $(document).ready(function(){
                    $("#fbLogin").click(function(){
                        console.log('test');
                         FB.login(function(response) {
                           if (response.authResponse) {
                             console.log('Welcome!  Fetching your information.... ');
                             FB.api('/me', function(response) {
                               console.log('Good to see you, ' + response.name + '.');
                             });
                           } else {
                             console.log('User cancelled login or did not fully authorize.');
                           }
                         });
                    });
                });

              };

          (function(d){
             var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
             if (d.getElementById(id)) {return;}
             js = d.createElement('script'); js.id = id; js.async = true;
             js.src = "//connect.facebook.net/en_US/all.js";
             ref.parentNode.insertBefore(js, ref);
           }(document));
        </script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

CBr*_*roe 5

在80或443以外的端口上进行测试时存在一些已知问题.尝试在其中一个("正常")HTTP(S)端口上设置测试计算机,并查看问题是否仍然存在.