-5

я запускаю FB.login() в моем Laravel PHP приложение, но Chrome блокирует всплывающие:Google хром задаток 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

chrome может блокировать всплывающие окна, вы не можете остановить его. лучше сказать пользователю разрешить всплывающие окна с точки зрения UX – 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