2011-01-19 3 views
1

Я включил график api facebook connect, но если мы заходим в facebook, мы автоматически запишемся на сайт с помощью подключения к facebook. Есть ли способ, по которому пользователь нажимает на fb «Вход», только тогда пользователь подключается к сайту со своей учетной записью fb?Facebook Connect отключить автоматический вход в систему

Теперь пользователь автоматически заходит на сайт без возможности выбрать, хотите ли они использовать свою учетную запись на facebook. Если они хотят выйти из сайта, им необходимо полностью выйти из фейсбука, только после этого они могут выйти из сайта с подключением к facebook.

Любой может помочь мне или дать несколько советов, как это сделать? Спасибо!

ответ

3

У меня была такая же проблема на недавнем веб-сайте, и я нашел способ ее преодолеть. Мое решение позволило пользователю уже войти в facebook на своем компьютере, но не иметь его авто входа на мой сайт, а затем они могут войти в систему с помощью кнопки входа в систему Facebook, и, наконец, когда они выйдут из системы, они не выведут их из Facebook на своем компьютере , только на моем сайте (так же, как Digg делает с facebook).

Для этого я использовал https://github.com/facebook/php-sdk/ для проверки внутри PHP, если был активный сеанс facebook с пользователем и веб-сайтом (что вызовет автоматический вход в систему). Если бы не было, я не хотел бы повторить код автоматического входа в систему:

FB.init({ 
     appId : '<?php echo $facebook->getAppId(); ?>', 
     session : <?php echo json_encode($session); ?>, // don't refetch the session when PHP already has it 
     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() { 
     window.location = "process-login.php"; 
    }); 

, но вместо этого просто делают свою собственную кнопку facebook входа в систему, которая будет ссылка «процесс-login.php».

process-login.php установит пользовательскую переменную $ _SESSION, которая сообщила на моем сайте, что кто-то был зарегистрирован (будь то через мою собственную систему или через facebook), а затем перезагрузите ссылочную страницу (используя $ _SERVER ['HTTP_REFERER'],), который теперь отображает пользователя, зарегистрированного через Facebook, так как теперь моя переменная $ _SESSION была установлена. Чтобы вывести их из системы (не выгружая их полностью из Facebook, только на моем сайте), я бы просто загрузил сценарий выхода, который удалил переменную $ _SESSION.

Example.php (в php-sdk on github) был очень полезен при поиске моего решения, хотя мне пришлось значительно его настроить, чтобы он работал с моей существующей системой. По крайней мере, это помогло мне увидеть, как получить доступ к переменной сеанса facebook в PHP (хранится в $ me в примере).

Надеюсь, это поможет вам, если это проблема, или что она помогает кому-то в этой ситуации.

EDIT: Оказывается, у меня все еще были проблемы с автоматическим входом в редкий случай. Чтобы исправить это, я удалил event.subscribe ('auth.login') и сделал кнопку facebook, которая вызвала следующую функцию, чтобы проверить статус входа в систему, прежде чем подписываться на auth.login. Вот функция:

function check_login_session(){ 
     FB.getLoginStatus(function(r){ 
      if(r.session){ 
       window.location = '/process-login.php'; 
      } 
      else{ 
       FB.Event.subscribe('auth.login', function(response) { 
        window.location = '/process-login.php'; 
       }); 
       FB.login(); 
      } 
     }); 
    }` 
0

привет, дорогой, я думаю, что вы поставили свой вопрос таким смущенным. Ваш вопрос не в том, что вы на самом деле хотите. Что касается, как я понял, я думаю, что вы хотите подключить пользователя к вашему сайту через facebook connect, и вы хотите, когда пользователь нажимает на выход в facebook, он автоматически выходит из вашего сайта. Если мое понимание вашего вопроса правильно, просто позвольте пользователю войти в систему через facebook и войти в систему в FB.Event.Subscribe. Используйте следующий код для кнопки входа

 
<fb:login-button perms='email' autologoutlink='true'> 

Когда пользователь позволит вашим его facebook аккаунт, чтобы соединиться с вашего сайта

 
<div id="fb-root"> 
<script> 
    window.fbAsyncInit = function() { 
    FB.init({appId: "Your APP ID", 
      status: true, 
      cookie: true, 
      xfbml: true}); 
    FB.getLoginStatus(function(response) { 
     if (response.session) { 
     // Send here parameters that logins to your system through your website login system 

     } else { 

    } 
    });  
    FB.Event.subscribe("auth.login", function(response) { 
    window.location.reload(); 
     }); 
FB.Event.subscribe("auth.logout", function(response) { 
    window.location.reload(); 

    //Send the Parameters that logouts user from your website through your website logout system; 
     }); 
     }; 
    (function() { 
    var e = document.createElement("script"); 
    e.type = "text/javascript"; 
    e.src = document.location.protocol + 
    "//connect.facebook.net/en_US/all.js"; 
    e.async = true; 
    document.getElementById("fb-root").appendChild(e); 
    }()); 


    

и поставить выше весь код сразу после < тела тега>

+0

и жаль, если я не достиг вашей проблемы :-) –

+0

Здравствуйте, спасибо большое за ответ. Извините, если мой вопрос запутан. На самом деле я хочу отключить автоматический вход в систему, когда пользователь входит в свою учетную запись на facebook. В настоящее время для тех, у кого есть логин в их facebook, они автоматически войдут на мой сайт также :(Я хочу, чтобы у пользователя был вариант, хотят ли они этого или нет. :) – Sylph

+0

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

0

Если у Вас есть:

FB.Event.subscribe('auth.login', function() { 
    fbLogin(this); 
}); 

Попробуйте прокомментировать/* fb.Event ..... */

1

Я имел Я думаю, что вы используете скрипты, предоставленные facebook. В этом случае у вас есть функция, связанная с событием window.fbAsyncInit. Это происходит каждый раз, когда страница загружается. В конце этого метода у вас есть код:

FB.getLoginStatus(function(response) { statusChangeCallback(response); });

Функция statusChangeCallback проверяет статус facebook вашего пользователя (подключено, утвержденный или неизвестны). Здесь, если пользователь «подключен», вы регистрируете его на своем сайте. Ну, это проблема, вы всегда пытаетесь войти в систему с помощью facebook.

Это должно происходить только по щелчку, так что вы должны удалить эти строки

Смежные вопросы