1

在舊版本的FB登錄按鈕,這個工作很適合我FB登錄按鈕,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和價值觀的accessToken和不操作的其餘部分。這一次只有當登錄按鈕被點擊時纔會發生。

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> 

我已經擴展了onlogin事件FB登錄按鈕,調用JS功能fb_login()時,在與Facebook按鈕,併成功的loggedIn登錄用戶點擊。

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