2012-06-08 1 views
1

Моя проблема:
, если я уже вошел в систему facebook, то она автоматически перенаправляет страницу и регистрируется на моем сайте.Избегайте автоматического входа на сайт, если я уже вошел в систему на facebook

Что мне нужно, даже если я вошел в систему на facebook, он должен остаться на странице, и после того, как я нажму кнопку «facebook login», он войдет на мой сайт.

<script> 
    // Load the SDK Asynchronously 
    (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)); 

    // Init the SDK upon load 
    window.fbAsyncInit = function() { 
     FB.init({ 
      appId: 'XXXXXXXXXXX', // App ID 
      channelUrl: '//' + window.location.hostname + '/channel', // Path to your  Channel File 
      status: true, // check login status 
      cookie: true, // enable cookies to allow the server to access the session 
      xfbml: true // parse XFBML 
     }); 

     FB.Event.subscribe('auth.login', function(response) { 
      if (response.status === 'connected') { 
       FB.api('/me', function(me) { 
        if (me.name) { 
         // the user is logged in and connected to your 
         // app, and response.authResponse supplies 
         // the user’s ID, a valid access token, a signed 
         // request, and the time the access token 
         // and signed request each expire 
         var uid = response.authResponse.userID; 
         var accessToken = response.authResponse.accessToken; 
         done1(uid, accessToken, me.email, me.name); 
        } 
       }) 
      } 

     }); 

     FB.Event.subscribe('auth.logout', function(response) { 
     }); 


     // listen for and handle auth.statusChange events 
     FB.Event.subscribe('auth.statusChange', function(response) { 
      if (response.authResponse) { 
       // user has auth'd your app and is logged into Facebook 
       FB.api('/me', function(me) { 
        if (me.name) { 
         document.getElementById("authdisplayname").innerHTML = me.name; 
         if (response.status === 'connected') { 
          var uid = response.authResponse.userID; 
          var accessToken = response.authResponse.accessToken; 
          done1(uid, accessToken, me.email, me.name); 
         } 
        } 
       }) 
       document.getElementById('auth-loggedout').style.display = 'none'; 
       document.getElementById('auth-loggedin').style.display = 'block'; 
      } else { 
       // user has not auth'd your app, or is not logged into Facebook 
       document.getElementById('auth-loggedout').style.display = 'block'; 
       document.getElementById('auth-loggedin').style.display = 'none'; 
      } 
     }); 
     $("#authlogoutlink").click(function() { FB.logout(function() { window.location.reload(); }); }); 
    } 

    function done1(a, b, c, d) { 
     document.getElementById("<%= uid.ClientID %>").value = a; 
     document.getElementById("<%= token.ClientID %>").value = b; 
     window.location = "http://localhost:59019/fgfgf_2008/new_login.aspx?token=" + b + "&email=" + c + "&name=" + d; 
    } 
</script> 

HTML код:

<div id="fb-root"> 
</div> 

<div> 
    <div id="auth-status"> 
     <div id="auth-loggedout"> 
      <div class="fb-login-button" onlogin="done();" autologoutlink="true" scope="email,user_checkins"> 
       Log in with Facebook</div> 
     </div> 
     <div id="auth-loggedin" style="display: none"> 
      Hi, <span id="authdisplayname" runat="server"></span>(<a href="#" id="authlogoutlink">logout</a>) 
     </div> 
    </div> 
</div> 
+0

После выполнения 'если (response.status === 'подключен')', то если я уже вошел в фейсбуке, то просто позвоните 'done1()' функции и перенаправлять и регистрируется на сайте. –

ответ

2

Я не мастер по вопросу facebook входа в системе, но после прочтения вашего вопроса, это выглядит, что если пользователь facebook вошел в его facebook счет , то он также автоматически регистрируется в вашем приложении. Но вы хотите, чтобы это произошло в то время, когда пользователь нажимает кнопку входа в систему, правильно.

Что вы можете сделать, вы можете создать функцию «FacebookLogin()», и вы можете вызвать эту функцию в событии клика.

Что-то вроде:

На кнопке HTML

<div class="fb-login-button" onclick="FacebookLogin()" onlogin="done();" autologoutlink="true" scope="email,user_checkins"> 
       Log in with Facebook</div> 

Я не очень уверен, что для этого в вашем случае, но он работал на меня, попробовать один раз, удалить ур все FB.Event.subscribe('auth.login', function(response) функции , и используйте функцию FB.login(), а затем перенаправляйте информацию пользователя на страницу, где захотите. Здесь я перенаправляю его на страницу Login.aspx.

В яваскрипта функции

function FacebookLogin() { 
    FB.login(function(response) { 
     if (response.authResponse) { 
      window.location = "/Login.aspx?NewFacebookConnect=true&accessToken=" + response.authResponse.accessToken + "&userID=" + response.authResponse.userID; 
     } 
    }); 
} 
+0

Отлично ... Я попробовал самостоятельно, прежде чем я посмотрел на ваш ответ ... но все же это сработало для меня, поэтому я принимаю ваш ответ ... Спасибо. –

+0

Мое удовольствие приятель. :) – Shekhar