Кнопка входа: не работает, когда пользователь вошел в Facebook - PullRequest
3 голосов
/ 21 сентября 2011

редактировать: объяснение: Когда должна появиться кнопка входа в Facebook, а когда нет? На странице учебника facebook это точно не объяснено. Там написано: «Если пользователь уже вошел в систему, кнопка входа не отображается». Но для меня это верно только тогда, когда пользователь вошел как в профиле facebook, так и в моем приложении facebook, подключенном к моему веб-сайту! Это неправда, эта кнопка удаляется, когда вы вошли в систему только в профиле Facebook, как это упоминается в руководстве по Facebook. Я прав? -

Может ли кто-нибудь помочь? Спасибо Tomas

// старое сообщение У меня есть кнопка входа в Facebook на моем сайте. Иногда посетители заходят в Facebook, но не заходят на мой сайт (мое приложение на fb). В этом случае отображается кнопка «Войти», но она ничего не делает. Как я знаю, кнопка «Войти» должна не только войти в Facebook, но и войти в мое приложение.

Работает нормально, когда пользователь вышел из Facebook и из приложения (веб-сайта) до нажатия. Но что, если пользователь вошел только на Facebook? Тогда моя кнопка ничего не делает.

Ответы [ 2 ]

3 голосов
/ 22 сентября 2011

Вы можете отобразить кнопку для сеанса подключения, а другую - для тех, у кого нет сеанса.

Пример использования: использование getLoginStatus () для определения, если пользователь подключен к приложению, и XFBML.parse для рендеринга кнопки. https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/ Я отказался от использования channelURL, но вы можете создать свой собственный и прочитать здесь. https://developers.facebook.com/docs/reference/javascript/

  1. если пользователь подключен и вошел в систему, появится кнопка выхода из системы.
  2. если пользователь не подключен, но вошел в Facebook, появится кнопка входа в систему.
  3. если не отображается кнопка сеанса или входа в систему.

Async JavaScript SDK

<div id="fb-root"></div>
<!-- build1 is where we render our button based on connected status. -->
<div id="build1"></div>
<script>
      window.fbAsyncInit = function() {
        FB.init({
    appId  : 'YourAppId',
    status : true, // check login status
    cookie : true, // enable cookies to allow the server to access the session
    xfbml  : true, // parse XFBML
    //channelUrl : 'http://WWW.MYDOMAIN.COM/channel.html', // channel.html file
    oauth  : true // enable OAuth 2.0
        });
        if (window!=window.top) { 
        FB.Canvas.setAutoResize();
            }
            FB.getLoginStatus(function(response) {
            if (response.authResponse) {
            // logged in and connected user, someone you know
            // render button
            Cbuild1 = document.getElementById('build1');
            Cbuild1.innerHTML = "";
        Cbuild1.innerHTML = "<fb:login-button autologoutlink=\"true\"></fb:login-button>";
            FB.XFBML.parse(Cbuild1);
            } else {
            // no user session available, someone you dont know
            // render button
            Cbuild1 = document.getElementById('build1');
            Cbuild1.innerHTML = "";
        Cbuild1.innerHTML = "<fb:login-button></fb:login-button>";
            FB.XFBML.parse(Cbuild1);
            }
          });

      };
      (function() {
        var e = document.createElement('script'); e.async = true;
        e.src = document.location.protocol +
          '//connect.facebook.net/en_US/all.js';
        document.getElementById('fb-root').appendChild(e);
      }());
</script>

функциональность loginStatus протестирована здесь https://shawnsspace.com/fb.test.connect.loginbutton.php

0 голосов
/ 22 сентября 2011

У меня такая же проблема. Я попробовал решение Шона и Картера, но до сих пор без улучшений. Но я заметил новый параметр для oauth в вызове FB.init. Если я установлю его на true, он будет работать как положено.

...