Перестали отправляться вызовы API javascript Facebook - PullRequest
0 голосов
/ 12 февраля 2019

У нас есть сайт, использующий логин Facebook.4 дня назад, без внесения каких-либо изменений, кнопка входа перестала функционировать.

Вызов FB.init работает хорошо, используя:

function initFB() {
    FB.init({
        appId: ufm_config.fbAppId,
        cookie: true,
        oauth: true,
        xfbml: true,
        logging: true,
        autoLogAppEvents: true,
        frictionlessRequests: true,
        status: true,
        version: 'v2.12'
    });

    FB.getLoginStatus(fbConnectionChanged);
    FB.Event.subscribe("auth.login", fbConnectionChanged);
    FB.Event.subscribe('auth.authResponseChange', fbConnectionChanged);
    FB.Event.subscribe("auth.logout", fbConnectionChanged);
}

Вызов getLoginStatus (fbConnectionChanged) также работает иобратный вызов запускается.

После загрузки страницы пользователь может нажать на кнопку входа в Facebook, когда он позвонит FB.Login (fbConnectionChanged).Я вижу, что вызов добавляется в массив «звонки» в коде SDK Facebook, но обратный вызов не запускается.

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

f .__ buffer.calls.push ([a, Array.prototype.slice.call (arguments)])

Даже если я изменю FBВместо этого .Login (fbConnectionChanged) вызывает FB.getLoginStatus (fbConnectionChanged), и я получаю то же поведение, так что это касается не только самого входа в систему.

Мы не изменили ничего и в приложении Facebook, исайт настроен в «Действительных URI перенаправления OAuth».

Что еще я могу попытаться сделать, чтобы решить его?

ОБНОВЛЕНИЕ:

Когда я вызываю FB.login () из консоли работает нормально.Не могу понять, почему он не работает с функцией нажатия кнопки.

1 Ответ

0 голосов
/ 14 февраля 2019

Мы столкнулись с той же проблемой 3-4 дня назад.Звонки идут в __buffer.Проблема здесь в том, что FB изменил что-то на своем SDK, который внутренне загружает более новую версию SDK.Когда вы делаете init, начальная версия загружается и возвращается синхронно.

https://connect.facebook.net/en_US/sdk.js загружает https://connect.facebook.net/en_US/sdk.js?hash=39f310e26cdcb1dd91634dc45d62ffe9&ua=modern_es6 асинхронно.Таким образом, наш способ обойти это - инициализировать FB при загрузке самой страницы.А затем используйте FB или window.FB, чтобы делать другие вызовы при нажатии (асинхронно).Вот почему он работает и на консоли, так как более новый sdk загружен к тому времени и доступен для использования.

псевдо-пример кода:

constructor() {
    FB.init({...})
}

onButtonClicked() {
    FB.login({...})
}

Также заметил, что __buffer теперьзаменены на __globalCallbacks в новой загруженной SDK.

Надеюсь, это поможет

...