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

егрировал график api facebook connect, но если мы войдем в facebook, мы автоматически войдем на сайт и через facebook connect. Можно ли как-то разрешить пользователю нажимать на фб «Логин» только тогда, когда пользователь подключается к сайту со своей учетной записью фб?

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

Кто-нибудь может мне помочь или дать несколько советов, как это сделать? Спасибо!

Ответы на вопрос(4)

дорогой, я думаю, что вы сделали ваш вопрос настолько запутанным. Ваш вопрос не говорит о том, что вы на самом деле хотите. Насколько я понял, я думаю, что вы хотите подключить пользователя к вашему сайту через 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);
   }());


 

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

 Awais Qarni21 янв. 2011 г., 06:32
хорошо теперь понял. Ну, я также интегрировал Facebook в один музыкальный сайт. У меня также та же проблема. Но я думаю, что когда вы подключаетесь к Facebook, cookie-файл Facebook сохраняется в вашем браузере. Когда ваш сайт загружается, он проверяет, есть ли в браузере файл cookie или сеанс Facebook, и он автоматически входит в систему. Я также не нашел решения этой проблемы.
 Awais Qarni28 янв. 2011 г., 07:11
Я думаю, что это можно сделать. Всякий раз, когда ваша страница загружается, сначала вы проверяете, входит ли пользователь в вашу систему или нет? если это не так, всегда выполняйте функцию fb: logout. он автоматически выйдет из системы с Facebook. Надеюсь это сработает
 Awais Qarni20 янв. 2011 г., 13:26
и извините, если я не дошел до вашей проблемы :-)
 Sylph28 янв. 2011 г., 04:42
Понятно, еще раз спасибо за ваш ответ. Это хорошая вещь, куки и сеанс в браузере. Интересно, как сайт нравитсяgroupego.com.my сделал это ?
 Sylph20 янв. 2011 г., 21:19
Здравствуйте, большое спасибо за ваш ответ. Извините, если мой вопрос сбивает с толку. На самом деле я хочу отключить автоматический вход в систему, когда пользователь входит в свою учетную запись Facebook. В настоящее время для тех, у кого есть логин на Facebook, они также автоматически войдут и на мой сайт :( Я хочу, чтобы у пользователя была возможность, хотят они этого или нет. :)

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

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

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

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

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

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

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

Решение Вопроса

и я нашел способ ее преодолеть. Мое решение позволило пользователю уже войти в 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, которая будет ссылаться на «process-login.php».

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

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

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

РЕДАКТИРОВАТЬ: Оказывается, у меня все еще были некоторые проблемы с автоматическим входом в систему в редких случаях. Чтобы исправить это, я удалил 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();
            }
        });
    }`

Ваш ответ на вопрос