LinkedIn SDK注销错误:“此页面上没有XD对象”

时间:2018-11-21 19:16:49

标签: javascript linkedin linkedin-jsapi

我目前正在为我的AngularJS应用程序使用here中所述的LinkedIn JS SDK。我将以下脚本插入页面的首页:

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

然后我使用类似按钮的onclick功能启动授权

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

这时,用户已通过LinkedIn进行身份验证,我可以使用LinkedIn的API。

当用户决定注销时,我使用呼叫IN.User.logout()结束用户的会话。但是,该调用导致此错误'Uncaught Error: no XD object is available from this page'出现在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对象为null,这就是引发此错误的原因。 LinkedIn上的任何人都可以帮忙吗?看起来好像有某种比赛条件。

1 个答案:

答案 0 :(得分:0)

我无法解决'no XD object is available from this page'错误。解决方法是,我调用注销URL本身来结束用户会话。这仍然会导致错误出现在控制台中,但是注销功能完全可以通过这种方式完成。