Facebook: FB.apiClient TypeError: $ wnd.FB.Facebook не определено "почему возникает эта ошибка? - PullRequest
0 голосов
/ 20 июня 2010

У нас одна проблема с Facebook. мы интегрировали FB в наше веб-приложение, когда пользователь входил через fconnect в наше веб-приложение, а затем он регистрировался в нашей системе (только в первый раз), просто предоставив свой электронный идентификатор. Для обычного пользователя несколько пользователей i / p для регистрации в нашей системе

Наше веб-приложение разработано на Java [GWT2.0].

Проблема в том, что FACEBOOK или normaluser регистрируются через FB в нашем веб-приложении. (1 за раз)

когда пользователь обновляет страницу, всплывающее окно FB появляется с сообщением

"Отладка: исключение при загрузке FB.apiClient TypeError: $ wnd.FB.Facebook не определено"

или иногда $ wnd.FB.Facebook.apiClient равен нулю встречается

мы получаем выше сообщение об ошибке [всплывающее] 3 раза.

мы использовали следующий скрипт на html странице

Только на 1 странице нашего веб-приложения, т.е. на странице UserHome, где мы отображаем информацию о пользователях. на этой странице только выше появляется сообщение об ошибке

Мы использовали следующий код GWT [от Gwittit] В классе контроллера [класс Singleton]

/ ** * Функция вызывается, когда загружаются все данные на первой странице. * * * / public void notifyFinishedLoadinPage () { FacebookConnect.waitUntilStatusReady (новый RenderAppWhenReadyCallback ());

}

приватный MyLoginCallback loginCallback = new MyLoginCallback ();

class MyLoginCallback implements LoginCallback {

    public void onLogin() {
        isFacebookSign = true;
        fbLoggedInUserId = ApiFactory.getInstance().getLoggedInUser();

        for (FacebookObserver Observer : facebookObservers) {
            Observer.notifyFacebookLogin(true);
        }
    }
}

public void publishStream(final FacebookObserver fbObserver) {
    FacebookConnect.init(FacebookConstants.FACEBOOK_API_KEY,

"xd_receiver.htm", loginCallback);

    FacebookConnect.requireSession(new

AsyncCallback () {

        public void onFailure(Throwable caught) {
            Window.alert("Require session failed: " + caught);
            GWT.log("Require session failed: " + caught, null);
        }

        public void onSuccess(Boolean isLoggedIn) {
            if (isLoggedIn) {
                for (FacebookObserver Observer :

facebookObservers) { Observer.notifyPublishStream (); } } } });

}

public void facebookConnection() {
    FacebookConnect.init(FacebookConstants.FACEBOOK_API_KEY,

"xd_receiver.htm", loginCallback); // SERVER FacebookConnect.requireSession (новый AsyncCallback () {

        public void onFailure(Throwable caught) {
            GWT.log("Require session failed: " + caught, null);
        }

        public void onSuccess(Boolean isLoggedIn) {
            if (loginCallback != null && isLoggedIn) {
                loginCallback.onLogin();
            } else {
                //User not logged in
            }
        }
    });
}

/**
 * Fired when we know users status
 */
private class RenderAppWhenReadyCallback implements

AsyncCallback {

    public RenderAppWhenReadyCallback() {
        FacebookConnect.init(FacebookConstants.FACEBOOK_API_KEY,

"xd_receiver.htm", loginCallback); // SERVER }

    public void onFailure(Throwable caught) {
        Window.alert("Unable to login through Facebook: " + caught);
    }

    public void onSuccess(ConnectState result) {
        if (result == ConnectState.connected) {
            isFacebookSign = true;

            for (FacebookObserver Observer : facebookObservers) {
                Observer.notifyFacebookLogin(true);
            }

            //History.newItem(HistoryConstants.USERHOME_PAGE_HISTORY_TOKEN);
        } else {
            //rightSideFlexTable.clearCell(0, 0);
            //rightSideFlexTable.setWidget(0, 0,

facebookPanel); isFacebookSign = false;

        }
    }
};

Теперь мы не смогли найти решение этой проблемы.

Может ли кто-нибудь помочь нам решить эту проблему КАК МОЖНО СКОРЕЕ

Надежда на лучшее сотрудничество

1 Ответ

0 голосов
/ 27 июля 2010

мы нашли решение по вышеуказанному вопросу.

Загрузка Facebook (логин) требует немного времени.

На нашей веб-странице мы получаем информацию о fb, например, о пользователях fb, loggedInId, Image и т. Д.поэтому во время загрузки страницы мы получаем все значения NULL, потому что Facebook не загружается должным образом, поэтому мы получаем $ wnd.FB.Facebook.apiClient имеет значение NULL или

Отладка: исключение приloading FB.apiClient TypeError: $ wnd.FB.Facebook не определен "

Чтобы решить эту проблему, мы напишем один метод, который вызывает, когда пользователь обновляет страницу или после загрузки Facebook выполнено правильно.

public void notifyFacebookLogin (логическое значение isLogin) {

Long fbLoggedInUserId = ApiFactory.getInstance (). GetLoggedInUser ();

if (fbLoggedInUserId! = Null 10 {1020) {* 10*

}

// код везде, где мы имеем дело с объектом, связанным с FB

}

Теперь сообщение об ошибке не отображается, когда пользователь обновляет страницу или если fb принимаетвремя до загрузки

Таким образом мы решаем нашу проблему.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...