-5

我在laravel PHP应用程序推出的FB.login(),而Chrome阻止弹出:由于网站域名的限制谷歌浏览器阻止弹出Facebook登录

<script> 
    window.fbAsyncInit = function() { 
     FB.init({ 
      appId  : '{{config('services.facebook.client_id')}}', 
      xfbml  : true, 
      version : 'v2.5' 
     }); 
    }; 

    (function(d, s, id){ 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_US/sdk.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 

    function facebookLogin(e){ 

     isLoggedIntoFacebook(function(isLoggedIn) { 
      if (isLoggedIn) { 
       window.location.href = '{{ route('social.redirect', ['provider' => 'facebook']) }}' 
      } else { 
       FB.login(function(response) { 
        loginUserIntoRegalosPersonales(); 
       }, { scope: ['email', 'user_birthday'] }); 

       FB.Event.subscribe('auth.login', function() { 
       window.location.href = '{{ route('social.redirect', ['provider' => 'facebook']) }}' 
       }); 
      } 
     }); 
    } 

    function isLoggedIntoFacebook(callbackFunction) { 
     FB.getLoginStatus(function(response) { 
      var isLoggedIn = (response.status === 'connected'); 

      if (typeof (callbackFunction) == "function") { 
       callbackFunction(isLoggedIn, response); 
      } 
     }); 
    } 
    </script> 

对不起,我不能不要拿这个小提琴。

这是什么问题?

+1

您需要在用户交互(例如点击链接/按钮)时调用'FB.login' _directly_。将其嵌入到任何异步内容中会使弹出窗口阻止程序阻止它。 – CBroe

+0

铬可能会阻止弹出窗口,你不能阻止它。最好告诉用户允许从用户体验角度看任何弹出窗口 – astroanu

回答

3

这些东西很重要:

  • 在页面加载使用FB.getLoginStatus只有
  • 使用FB.login直接在用户交互(鼠标点击),而不是在一个(异步)回调函数

例如:http://www.devils-heaven.com/facebook-javascript-sdk-login/

不要指望用户改变他的浏览器设置,那将是一个非常糟糕的解决方案。修复你的代码,一切都会好的。

-1
Turn pop-ups on or off 
1-Open Chrome. 
2-In the top-right corner, click the icon you see: Menu or More . 
3-Click Settings. 
4-Click Show advanced settings. 
5-Under "Privacy," click Content settings. 
6-Under "Pop-ups," select Do not allow any site to show pop-ups (recommended) or Allow all sites to show pop-ups. 
+0

不,这是我的情况http://stackoverflow.com/questions/26817023/fb-login-inside-fb-getloginstatus-popup-window-blocked –

+0

所以你会告诉每个用户关闭那个非常重要的设置?这是一个非常糟糕的解决方案。 – luschn

相关问题