Office js 无法通过Office JS API获取用户标识令牌

Office js 无法通过Office JS API获取用户标识令牌,office-js,outlook-web-addins,Office Js,Outlook Web Addins,我们的生产客户正在努力解决以下错误: Office JS API不返回用户标识令牌,这会阻止外接程序的全部使用 我们在日志中看到的错误: { “名称”:“访问受限”, “消息”:“内部协议错误:'-2147467259'。”, “代码”:9017 } 有时它出现在笔记本电脑在睡眠模式后醒来时,有时不出现 此外,当我们的代码执行get user identity token async时,Office JS API中有时会出现以下错误(但不是每次都出现AccessRestricted错误): "

我们的生产客户正在努力解决以下错误: Office JS API不返回用户标识令牌,这会阻止外接程序的全部使用

我们在日志中看到的错误:

{
“名称”:“访问受限”,
“消息”:“内部协议错误:'-2147467259'。”,
“代码”:9017
}
有时它出现在笔记本电脑在睡眠模式后醒来时,有时不出现

此外,当我们的代码执行get user identity token async时,Office JS API中有时会出现以下错误(但不是每次都出现
AccessRestricted
错误):

"Unable to get property 'Execute' of undefined or null reference",
"number": -2146823281,
"stack": 
    "TypeError: Unable to get property 'Execute' of undefined or null reference
     at n.prototype.execute (https://appsforoffice.microsoft.com/lib/1... (truncated by our logging system)
Outlook版本为16.0.8528.2147,加载项已固定。 P.S.Office JS API已初始化,这不是此问题的根本原因

以下是代码片段:

sfMailApp.OfficeManager.prototype.getCallbackTokenAsync=函数(){
var item=this.getItem();
return!item.isFake?this.\u loadItemAsync(Office.context.mailbox,'getCallbackTokenAsync'):sfMailApp.utils.resolveDeferred(“”);
};
sfMailApp.OfficeManager.prototype.getIdentityTokenAsync=函数(强制){
var ls=getLocalStorage();
var lastUpdateIdentityTokenTimestamp=ls.getItem('identityTokenUpdate');
var cachedIdentityToken=ls.getItem('identityToken');
var lastUpdateIdentityTokenDifference=!sfMailApp.utils.isNullOrEmpty(lastUpdateIdentityTokenTimestamp)?(新日期().getTime()-parseInt(lastUpdateIdentityTokenTimestamp)):null;
如果(sfMailApp.utils.isNullOrEmpty(cachedIdentityToken)| | cachedIdentityToken=='null'| | sfMailApp.utils.isNullOrEmpty(lastUpdateIdentityTokenDifference)| |强制||
(lastUpdateIdentityTokenDifference/(1000*60))>sfMailApp.settings.identityTokenUpdateIntervalMinutes){
var deferred=$.deferred();
var item=this.getItem();
如果(!item.isFake){
sfMailApp.analytics.trackEvent('LoadUserIdentityTokenAsync','Start','{
用户:sfMailApp.mailService.userEmail
});
此._loadItemAsync(Office.context.mailbox,'getUserIdentityTokenAsync').done(函数(令牌){
ls.setItem('identityTokenUpdate',new Date().getTime());
ls.setItem('identityToken',标记);
sfMailApp.sessionManager.setIdentityToken(令牌);
延迟。解决(令牌);
}).失败(功能(错误){
ls.setItem('identityTokenUpdate',null);
ls.setItem('identityToken',null);
sfMailApp.analytics.trackEvent('LoadUserIdentityTokenAsync','Fail','{
用户:sfMailApp.mailService.userEmail,
消息:err?JSON.stringify(err):'null'
});
延迟。拒绝(错误);
});
}否则{
sfMailApp.analytics.trackEvent('Item','Empty','{
用户:sfMailApp.mailService.userEmail,
消息:“获取标识令牌时出错-收件箱项目为空”
});
sfMailApp.sessionManager.setIdentityToken(cachedIdentityToken);
返回sfMailApp.utils.resolveDeferred(cachedIdentityToken);
}
延迟返回。承诺();
}否则{
sfMailApp.sessionManager.setIdentityToken(cachedIdentityToken);
返回sfMailApp.utils.resolveDeferred(cachedIdentityToken);
}
};
sfMailApp.OfficeManager.prototype.\u loadItemAsync=函数(obj,名称){
if(sfMailApp.utils.isCommands()&&sfMailApp.isCommandsMagicPixel){
返回sfMailApp.utils.return({
消息:“插入MagicPixel时,不应在命令中调用异步Office JS API”
});
}
var deferred=$.deferred();
var maxAttempCount=5;
var AttemInterval=1000;
var attempCount=0;
var_this=这个;
函数检查结果(asyncResult){
var processFunc=函数(){
试一试{
如果(_this._checkPropertyExists(对象,名称)){
obj[名称](检查结果);
}否则{
检查结果(空);
}
}捕获(e){
如果(名称!='loadCustomPropertiesAsync'&&name!='getCallbackTokenAsync'){
sfMailApp.analytics.trackException(e,name+'.Fail'{
用户:sfMailApp.mailService.userEmail,
错误:e?JSON.stringify(e):null
});
}
检查结果(空);
}
}
if((sfMailApp.utils.isNullOrEmpty(asyncResult)| | asyncResult.status!==Office.AsyncResultStatus.Successed)&&attempCount如果(attempCount谢谢你让我们知道,Sviatoslav。我们知道这个问题,目前正在调查。一旦确定了修复程序,我们将更新此答案!

你能提供导致此错误的代码吗?@Marclafler谢谢你的及时回复,代码已附加。我不知道你的答案在哪里引用名为
Execute
的方法或属性。它在哪一行失败?@Mark,请检查对脚本URL的引用。这是您的Office JS API代码…我理解,但我仍然不清楚是哪个对Office.JS的调用触发了错误。我假设您仍然看到useridentitytoken调用的问题。看到了吗它们用于最新的outlook版本?如果是,您可以共享最新的版本号吗?我们在asyncResult对象中添加了一个名为diagnostic的额外参数,用于令牌调用,该参数应该为您提供有关失败的更多信息。这应该在版本>16.0.10224.10000的客户端中可用。您可以看看t帽,看看这是否有助于提供一些额外的信息并在此处共享。客户端连接到的exchange版本是什么?@OutlookAdd insTeam MSFT我目前正遭受此er的困扰