Подключение Facebook входит в кнопку, не представляющую

Я пытаюсь реализовать сайт Единой точки входа Подключения Facebook. У меня первоначально просто была Кнопка соединения (<fb:login-button>), который пользователь должен был нажать каждый раз, когда они хотели регистрироваться. У меня теперь есть автоматическая работа функций входа в систему и выхода из системы. Таким образом, мой сайт будет обнаруживать зарегистрированный аккаунт в Facebook и автоматически аутентифицировать их, если он может найти соответствие к одним из учетных записей пользователей моего сайта, и автоматически deauthenticate, если сессия Facebook проиграна. У меня также есть ручная кнопка выхода из системы, которая зарегистрирует пользователя и из моего сайта и из Facebook. Все те работают правильно, но теперь моя исходная Кнопка соединения периодически не представляется правильно. Это просто обнаруживается как простой XHTML (т.е., это похоже на простой текст - не кнопку - и неактивируемо по щелчку), и никакой XFBML не применяется. Вот абсолютный код:

На каждой странице:

<body>
{...}
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script>

<script type="text/javascript>
FB.init('APIKey', '/xd_receiver.htm');

var isAuth; // isAuth determines if the user is authenticated on my site
            // it should be true on the logout page, false on the login page
FB.ensureInit(function(){ 
    var session = FB.Facebook.apiClient.get_session();
    if (session && !isAuth) {
        PageMethods.FacebookLogin(session.uid, session.session_key, FBLogin, FBLoginFail);
        // This is an AJAX call that authenticates the user on my site. 
    } else if(!session && isFBAuth) {
        PageMethods.FacebookLogout(FBLogout, FBLogoutFail);
        // This is an AJAX call that deauthenticates the user on my site.
    }
    // the callback functions do nothing at the moment
});
</script>

{...}
</body>

На странице входа в систему: (эта страница не видима к, вошел в систему пользователи),

<body>
{...}
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script>

<script type="text/javascript>
    FB.init('APIKey', '/xd_receiver.htm');
    {...} // auto-auth code as on every page
</script>

<!-- This is the button that fails to render -->
<fb:login-button v="2" onlogin="UserSignedIntoFB();" size="large" autologoutlink="true"><fb:intl>Login With Your Facebook Account</fb:intl></fb:login-button>

<script type="text/javascript">
    function UserSignedIntoFB() {
        {...} // posts back to the server which authenticates the user on my site & redirects
    }
</script>
{...}
</body>      

На странице выхода из системы: (эта страница не видима к, вышел из системы пользователи),

<body>
{...}
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script>

<script type="text/javascript>
    FB.init('APIKey', '/xd_receiver.htm');
    {...} // auto-auth code as on every page
</script>

<script type="text/javascript">
    function FBLoggedOut() {
        {...} // posts back to the server which deauthenticates the user on my site & redirects to login
    }

    function Logout() {
        if (FB.Facebook.apiClient.get_session()) {
            FB.Connect.logout(FBLoggedOut); // logs out of Facebook if it's a Facebook account
            return false;
        } else {
            return true; // posts back if it's a non-Facebook account & redirects to login
        }
    }
</script>
<a onclick="return Logout();" href="postback_url">Sign Out</a>
{...}
</body>

Некоторые вещи я уже посмотрел на:

  • Автоматический вход в систему и выход из системы работают отлично. Я могу войти в систему и из Facebook на другой вкладке, и мой сайт заметит изменения сессии и обновление соответственно.
  • Выход из системы, кажется, хорошо работает: при нажатии, это deauthenticates пользователь и входе их из Facebook, как предназначено.
  • Проблема, кажется, обычно происходит после того, как пользователь Facebook выходится из системы, но это происходит несколько периодически; это могло бы произойти, прежде чем они когда-либо будут входить в систему, и это уходит после нескольких минут/обновлений.
  • Некоторые cookie перенесены после процесса входа в систему/выхода из системы, но удаление их не устраняет проблему.
  • Перезапуск браузера не устраняет проблему.
  • Пользователь определенно вышел из Facebook и моего сайта, когда проблема происходит. Я проверил на сессии Facebook и аутентификацию сайта.
  • Все внешние вызовы сценария подаются правильно.
  • Править: Кроме того, когда кнопка входа в систему действительно представляет, она хорошо работает.

У меня есть подозрение, что существует что-то еще, что я должен делать после выхода из системы (как очищающаяся сессия или cookie), но согласно всему я читал о Подключении Facebook, все, что я должен сделать, вызывают функцию выхода из системы (и deauthenticate на моей серверной стороне). Я действительно в недоумении; у кого-либо есть какие-либо идеи, что могло быть неправильным?

5
задан tloflin 31 March 2010 в 00:25
поделиться

1 ответ

убедитесь, что вы вызываете facebook js include (FeatureLoader) в ОЧЕНЬ КОНЕЦ вашей страницы, чтобы ваша страница отображалась, а затем facebook JS творит чудеса после факт превратить текст в кнопку.иначе это гонка между вызовом серверов fb и загрузкой содержимого вашего сайта в браузере ...

по крайней мере, это была проблема, с которой я столкнулся.

6
ответ дан 14 December 2019 в 13:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: