Linkedin Javascript SDK捕获过期令牌

Linkedin Javascript SDK捕获过期令牌,javascript,oauth,sdk,linkedin,Javascript,Oauth,Sdk,Linkedin,我们使用Linkedin让会员“登录”以访问后端。我们只使用Javascript SDK,因为我们的网站非常简单。我们有许多用户在6个月后返回,并收到以下错误,而没有看到“使用Linkedin登录”按钮: [未经授权]。过期的访问令牌。时间戳:1501736450333 由于我们没有后端在令牌到期60天之前批量续订令牌,因此我们的成员的一个简单解决方案是首先注销,查看“登录”按钮,然后再次登录——我们知道这会重新验证令牌 问题:我不知道如何“捕获”错误或识别用户何时使用Linkenin的Java

我们使用Linkedin让会员“登录”以访问后端。我们只使用Javascript SDK,因为我们的网站非常简单。我们有许多用户在6个月后返回,并收到以下错误,而没有看到“使用Linkedin登录”按钮:

[未经授权]。过期的访问令牌。时间戳:1501736450333

由于我们没有后端在令牌到期60天之前批量续订令牌,因此我们的成员的一个简单解决方案是首先注销,查看“登录”按钮,然后再次登录——我们知道这会重新验证令牌

问题:我不知道如何“捕获”错误或识别用户何时使用Linkenin的Javascript SDK拥有过期令牌

<script type="text/javascript" src="//platform.linkedin.com/in.js">
    api_key:   XXXXXXXXXXXXX
    onLoad:    li_OnFrameworkLoad
    authorize: true
</script>  

...

<script type="text/javascript">
function li_OnFrameworkLoad() {
  IN.Event.on(IN, "auth", li_OnAuth);
}
</script>
方法,但这不起作用

IN.Event.on(IN, "auth", li_OnAuth);
将触发“[unauthorized]”消息,而不首先调用“li_OnAuth”回调

复制:此错误最糟糕的部分是,如果您知道如何触发“[unauthorized].Expired access token…”错误,我似乎无法在本地计算机上复制它。请务必通知我

解决方案?:最近一个可能的解决方案是使用:

<script type="text/javascript">
window.onerror = function(e) {
  if (e == 'Script error.') {
    console.log('There is a chace IN.init failed.');
  }
}
</script>

window.onerror=函数(e){
如果(e=='脚本错误'){
log('在.init中有一个更改失败');
}
}
但我对“window.onerror”不是很熟悉,我也不确定Linkedin Javascript SDK是否会在令牌过期时触发错误,等等。基本上我只需要捕获错误并调用我的“li_logout();”函数从Linkedin注销用户并刷新页面


非常感谢,如果您有任何建议,我们将不胜感激。

请尝试将.User.isAuthorized()放在li_OnFrameworkLoad()中,以便在尝试授权用户之前始终调用它。默认情况下,从未使用过该服务的新用户将注销,不是吗?然后他们将进入一个页面刷新循环,因为他们将永远无法对自己进行身份验证。对不起,时间还早:)!请查看IN.User.refresh()。它将使令牌的有效期再延长30分钟。即使令牌已过期,该操作是否有效?发生该错误是因为令牌已过期。实际上,有没有一种方法可以模拟过期的令牌来测试各种方法?尝试将.User.isAuthorized()放入li_OnFrameworkLoad()中,这样它总是在尝试授权用户之前被调用,然后从未使用过该服务的新用户将默认注销,没有?然后他们将进入一个页面刷新循环,因为他们将永远无法对自己进行身份验证。对不起,时间还早:)!请查看IN.User.refresh()。它将使令牌的有效期再延长30分钟。即使令牌已过期,该操作是否有效?发生该错误是因为令牌已过期。实际上,有没有办法模拟过期的令牌来测试各种方法?
<script type="text/javascript">
window.onerror = function(e) {
  if (e == 'Script error.') {
    console.log('There is a chace IN.init failed.');
  }
}
</script>