Подтвердить что ты не робот

API-интерфейс Facebook: FB.login() вызывается перед вызовом FB.init()

Я пытаюсь использовать новый API Facebook Graph на своем веб-сайте. Это то, что у меня есть:

Где-то на странице:

<fb:login-button autologoutlink="true" perms="email,user_birthday,status_update,publish_stream"></fb:login-button>

Сразу после тега:

<div id="fb-root">
    </div>
    <script type="text/javascript">
        window.fbAsyncInit = function () {
            FB.init({ appId: '<%= ConfigurationManager.AppSettings["FBAppId"] %>', status: true, cookie: true, xfbml: true });

            /* All the events registered */
            FB.Event.subscribe('auth.login', function (response) {
                // do something with response
                alert("login success");
            });
            FB.Event.subscribe('auth.logout', function (response) {
                // do something with response
                alert("logout success");
            });

            FB.getLoginStatus(function (response) {
                if (response.session) {
                    // logged in and connected user, someone you know
                    alert("login success");
                }
            });
        };
        (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);
        } ());
    </script>

но когда я нажимаю кнопку сгенерированного входа, ничего не происходит.

Кроме того, я получаю

FB.getLoginStatus() called before calling FB.init().

в консоли Firebug.

Любые идеи?

4b9b3361

Ответ 1

Я не могу в это поверить, я ссылался на не существующий ключ в Web.config, поэтому FB.init терпел неудачу.

Теперь он работает как ожидается.

Чтобы быть более ясным, я не передавал appId в FB.init, как только я это сделал, он работал.

Ответ 2

В моем случае проблема исчезла после того, как я отключил функциональность XFBML (т.е. установил ключ xfbml в false, удалив пространство имен fb: и фрагмент #xfbml=1 в <script src="…">)). Хорошо, что мне это все равно не нужно.

YMMV, есть несколько других веских причин, почему это сообщение об ошибке может появиться.

Ответ 3

Если бы та же проблема, вот решение, которое сработало для меня. Просто добавьте следующее в свой раздел или, другими словами, добавьте app_id в источник facebook js.

<script src="//connect.facebook.net/en_US/all.js&appId=xxxxxxxxxxxxxxx" type="text/javascript"></script>