У меня была такая же проблема на недавнем веб-сайте, и я нашел способ ее преодолеть. Мое решение позволило пользователю уже войти в 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();
}
});
}`
и жаль, если я не достиг вашей проблемы :-) –
Здравствуйте, спасибо большое за ответ. Извините, если мой вопрос запутан. На самом деле я хочу отключить автоматический вход в систему, когда пользователь входит в свою учетную запись на facebook. В настоящее время для тех, у кого есть логин в их facebook, они автоматически войдут на мой сайт также :(Я хочу, чтобы у пользователя был вариант, хотят ли они этого или нет. :) – Sylph
хорошо понятен. Ну, я также интегрировал facebook на одном музыкальном сайте. У меня тоже такая же проблема. Но я думаю, что когда вы подключаетесь к facebook, cookie facebook сохраняется в вашем браузере. Когда ваш сайт загружается, он проверяет, что браузер имеет cookie или сеанс facebook, он автоматически регистрируется. Я не нашел и никакого решения этого. –