2012-05-11 21 views
2

這是我的第一個應用程序。登錄按鈕不適用於我的應用程序。它被顯示,但是當我點擊它時,沒有任何反應。登錄按鈕不能在IE7,8,9上工作

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    <html xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://opengraphprotocol.org/schema/"> 
    .... 
    <body> 
    <div id="fb-root"></div> 
    <script> 
     window.fbAsyncInit = function() { 
       FB.init({ 
       appId  : '306025322809511', 
       channel : 'http://koreplayer.fb.levelkro.com/channel.php', 
       status  : true, 
       cookie  : true, 
       xfbml  : true, 
       oauth  : true, 
       }); 
       FB.Event.subscribe('auth.login', function() { 
        if (response.authResponse) { 
          window.location = "/manage.php"; 
        } 
       }); 
     }; 
     (function(d){ 
     var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
     js = d.createElement('script'); js.id = id; js.async = true; 
     js.src = "//connect.facebook.net/fr_FR/all.js"; 
     d.getElementsByTagName('head')[0].appendChild(js); 
     }(document)); 
    </script> 
    .... 
    <div class="fb-login-button">Se connecter en utilisant Facebook</div> 

我嘗試過使用通道參數,但沒有通道顯示樣式。

+0

控制檯中是否顯示任何內容?按F12查看控制檯。 – Sampson

+0

控制檯只會說「FB沒有定義」,如果Y運行調試器,我可以登錄。 – levelKro

回答

0

好的,問題是由apps.facebook.com/koreplayer/的iFrame引起的,IE不保存cookie,因爲它是在一個框架中。這是IE防止欺詐的安全功能。

0

您需要在「fb-login-button」上觸發FB.login()。你可以使用onclick()或者使用jQuery $('.fb-login-button')來實現。click(function(){FB.login();});

此外,下面的問題不會防止登錄彈出,但會在登錄後停止刷新。所以,如果您已經登錄,它會使它看起來像沒有任何反應,因爲登錄盒子就會打開,然後關閉,因爲它沒有任何關係。

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

需要改變,以

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

最後,windows.location最好能有一個完整的URL(以http://或https://)。不必,但應該讓它工作得更好。

window.fbAsyncInit = function() { 
     FB.init({ 
     appId  : '306025322809511', 
     channel : 'http://koreplayer.fb.levelkro.com/channel.php', 
     status  : true, 
     cookie  : true, 
     xfbml  : true, 
     oauth  : true, 
     }); 
    }; 
    FB.Event.subscribe('auth.login', function (response) { 
    if (response.authResponse) { 
     window.location = "http://koreplayer.fb.levelkro.com/manage.php"; 
     } 
    }); 

你需要有FB.Event認購fbAsyncInit函數內部:

window.fbAsyncInit = function() { 
     FB.init({ 
     appId  : '306025322809511', 
     channel : 'http://koreplayer.fb.levelkro.com/channel.php', 
     status  : true, 
     cookie  : true, 
     xfbml  : true, 
     oauth  : true, 
     }); 
     FB.Event.subscribe('auth.login', function (response) { 
     if (response.authResponse) { 
      window.location = "http://koreplayer.fb.levelkro.com/manage.php"; 
     } 
     }); 
    }; 

後期編輯:我添加


下面的評論後編輯在帖子第二部分的auth-subscribe參數中的「響應」。

+0

謝謝,但如果我保留FB.Event與您的修復程序,IE做一個循環。 – levelKro

+0

此外,我已經失去了按鈕的樣式,'FB'沒有定義。 – levelKro

+0

我從facebook使用PHP和JS SDK,當用戶轉到index.php時,PHP返回$ userInfo有效,用戶轉到manage.php頁面,如果在manage.php中,$ userInfo返回false,則用戶返回索引。 PHP頁面登錄。 – levelKro

0

我知道js sdk加載後使用xfbml parse來渲染我的按鈕,在下面使用。


<div id="login_button"><div> 
<div id="fb-root"></div> 
<script> 
     window.fbAsyncInit = function() { 
     FB.init({ 
    appId : '135669679827333', 
    status : true, // check login status 
    cookie : true, // enable cookies to allow the server to access the session 
    xfbml : true, // parse XFBML 
    channelUrl : 'https://anotherfeed.com/emo/channel.html', // channel.html file 
    oauth : true // enable OAuth 2.0 
     }); 
function loginbutton(){ 
var loginb=document.getElementById('login_button'); 
login.innerHTML+='<div class="fb-login-button">Se connecter en utilisant Facebook</div>'; 
FB.XFBML.parse(loginb); 
}; 
setTimeout("loginbutton();", 2000); 
     }; 
    // Load the SDK Asynchronously 
(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=135669679827333"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk')); 
</script> 

注意:這將僅呈現一個登錄鏈接。

+1

我試過這個代碼,不工作 – levelKro

+0

什麼是不工作關於這個代碼? –

+0

該按鈕不可見 – levelKro