1

В старой версии кнопки FB Вход, это работает хорошо для меняFB кнопка Войти в HTML 5 с JS перенаправлять

<fb:login-button scope='email,publish_stream'>Login</fb:login-button> 
<div id='fb-root'></div> 

<script type='text/javascript' src='http://connect.facebook.net/en_US/all.js'></script>  
<script>window.fbAsyncInit = function() {FB.init({ 
     appId: '<?php echo $facebook->getAppID(); ?>', 
     cookie: true, 
     xfbml: true, 
     oauth: true 
    }); 
    FB.Event.subscribe('auth.login', function(response) { 
     window.location = '/fb_redirect.php'; 
    }); 
    FB.Event.subscribe('auth.logout', function(response) { 
     window.location.reload(); 
    }); 
    }; 
    (function() { 
    var e = document.createElement('script'); 
     e.async = true;e.src = document.location.protocol +'//connect.facebook.net/en_US/all.js';document.getElementById('fb-root').appendChild(e);}()); 
    </script> 

Но, мой друг недавно предложил переключиться на новый HTML 5 кнопку Вход следующим образом:

<div id='fb-root'></div> 
     <script> 
      (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/all.js#xfbml=1&appId=APPID'; 
       fjs.parentNode.insertBefore(js, fjs); 
      }(document, 'script', 'facebook-jssdk')); 
     </script> 

Это хорошо работает. За исключением того, что я не могу найти способ для JS инициировать перенаправление на /fb_redirect.php. В старом примере

FB.Event.subscribe('auth.login', function(response) { 
     window.location = '/fb_redirect.php'; 
    }); 

работал просто отлично. Но мне нужно, чтобы пользователь был перенаправлен на /fb_redirect.php, чтобы PHP мог начать сеанс и вставить часть информации FB пользователя в БД.

ответ

0

Это, как оказалось, было моей неосторожной ошибкой. Ответ был в первой части этого вопроса.

Это просто было добавить

FB.Event.subscribe('auth.login', function(response) { 
    window.location = '/fb_redirect.php'; 

});

1

вот ваш параметр по умолчанию

<div id="fb-root"></div> 
<script type="text/javascript"> 
window.fbAsyncInit = function() { 
FB.init({ 
    appId  : <?php echo $facebook->getAppID() ?>, 
    status  : false, 
    cookie  : true, 
    xfbml  : true 
}); 
}; 

(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)); 

Вот моя функция пользовательских fb_login, моя пользовательская функция fb_login() извлекает значения UID и маркер доступа и делает остальную часть работы. На этот раз это происходит только при нажатии кнопки входа в систему.

function fb_login() { 
     FB.login(function(response) { 
      if (response.status === 'connected') { 
      var uid = response.authResponse.userID; 
      var accessToken = response.authResponse.accessToken; 
       if ((parseFloat(uid) == parseInt(uid)) && !isNaN(uid)) { 
        window.location = '/fb_redirect.php'; 

        } 
    } 
     }); 
     } 

</script> 

я продлил кнопку входа FB с OnLogin событие, которое вызывает функцию fb_login JS(), когда пользователь нажимает на входе в систему с помощью кнопки facebook и успешно LoggedIn.

<div class="fb-login-button" onlogin="fb_login()"></div>