我目前正在为我的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上的任何人都可以帮忙吗?看起来好像有某种比赛条件。
答案 0 :(得分:0)
我无法解决'no XD object is available from this page'
错误。解决方法是,我调用注销URL本身来结束用户会话。这仍然会导致错误出现在控制台中,但是注销功能完全可以通过这种方式完成。