В настоящее время я использую 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 помочь с этим?Похоже, что есть какое-то состояние гонки.