Ошибка выхода из LinkedIn SDK: «объект XD недоступен на этой странице» - PullRequest
0 голосов
/ 21 ноября 2018

В настоящее время я использую SDK LinkedIn JS, как описано здесь для моего приложения AngularJS.Я вставляю следующий скрипт в блок заголовка моей страницы:

<script type="text/javascript" src="//platform.linkedin.com/in.js">
   api_key: [apiKey]
   authorize: false
</script>

Затем я запускаю авторизацию с помощью функции onclick для такой кнопки

IN.User.authorize(function(){
   callback();
});

На этом этапеПользователь аутентифицирован в LinkedIn, и я могу использовать API-интерфейсы LinkedIn.

Когда пользователь решает выйти из системы, я использую вызов IN.User.logout() для завершения сеанса пользователя.Однако вызов вызывает эту ошибку «Uncaught Error: на этой странице недоступен объект XD» для отображения в консоли JavaScript.

Такое случается иногда, и я не уверен, почему именно эта проблема возникает.В большинстве случаев SDK будет выходить из сеанса в обычном режиме.Я проверяю, что инфраструктура LinkedIn загружается перед вызовом каких-либо функций, и я вызываю IN.User.isAuthorized() перед тем, как вызвать выход из системы.У кого-нибудь есть представление о том, что я могу делать неправильно?

if (IN.User.isAuthorized()) {  // Returns true
    IN.User.logout();  // Prints `'Uncaught Error: no XD object is available from this page' error
}

РЕДАКТИРОВАТЬ:

Я изучаю исходный код, и он показывает, что эта функция вызывается:

Sslac.Function("IN.Support.getXD", function() {
    function a() {
        throw Error("no XD object is available from this page");
    }
    try {
        return IN.Support.isSingleJS() && IN.Support.isPopup() ? IN.Support.generateXDProxy() : IN.Support.isPopup() ? window.opener.getXD || a : IN.Support.isIframe() ? window.parent.getXD || a : a
    } catch (b) {
        return a
    }
}());

Но объект IN.Supportноль, поэтому эта ошибка выбрасывается.Может ли кто-нибудь из LinkedIn помочь с этим?Похоже, что есть какое-то состояние гонки.

1 Ответ

0 голосов
/ 26 ноября 2018

Я не смог исправить ошибку 'no XD object is available from this page'.В качестве обходного пути я вызвал сам URL выхода из системы, чтобы завершить сеанс пользователя.Это все еще заставляет ошибку появляться в консоли, но функция выхода полностью завершает этот путь.

...