2017-11-08 14 views
1

プロダクションユーザーは、次のエラーで苦労しています。 Office JS APIはユーザーIDトークンを返さず、これによりアドインの使用がブロックされます。我々はログに表示さOffice JS API経由でユーザーIDトークンを取得できません

エラー:ノートパソコンがスリープモードの後に​​目を覚ましたときに

{ 
    "name": "AccessRestricted", 
    "message": "Internal protocol error: '-2147467259'.", 
    "code": 9017 
} 

時にはそれが、時にはません表示されます。 OfficeのJS APIの

また、次のエラーが(AccessRestrictedエラーが見れるたびにではなく)時々現れる我々のコードは、ユーザーIDトークン非同期を取得し実行します。

"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.P. Office JS APIが初期化されましたが、この問題の根本的な原因ではありません。私たちは、スヴャトスラフを知らせるための

sfMailApp.OfficeManager.prototype.getCallbackTokenAsync = function() { 
    var item = this.getItem(); 

    return !item.isFake ? this._loadItemAsync(Office.context.mailbox, 'getCallbackTokenAsync') : sfMailApp.utils.resolveDeferred(''); 
}; 

sfMailApp.OfficeManager.prototype.getIdentityTokenAsync = function (force) { 
    var ls = getLocalStorage(); 
    var lastUpdateIdentityTokenTimestamp = ls.getItem('identityTokenUpdate'); 
    var cachedIdentityToken = ls.getItem('identityToken'); 

    var lastUpdateIdentityTokenDifference = !sfMailApp.utils.isNullOrEmpty(lastUpdateIdentityTokenTimestamp) ? (new Date().getTime() - parseInt(lastUpdateIdentityTokenTimestamp)) : null; 

    if (sfMailApp.utils.isNullOrEmpty(cachedIdentityToken) || cachedIdentityToken === 'null' || sfMailApp.utils.isNullOrEmpty(lastUpdateIdentityTokenDifference) || force || 
     (lastUpdateIdentityTokenDifference/(1000 * 60)) > sfMailApp.settings.identityTokenUpdateIntervalMinutes) { 
     var deferred = $.Deferred(); 

     var item = this.getItem(); 

     if (!item.isFake) { 
      sfMailApp.analytics.trackEvent('LoadUserIdentityTokenAsync', 'Start', { 
       user: sfMailApp.mailService.userEmail 
      }); 

      this._loadItemAsync(Office.context.mailbox, 'getUserIdentityTokenAsync').done(function (token) { 
       ls.setItem('identityTokenUpdate', new Date().getTime()); 
       ls.setItem('identityToken', token); 
       sfMailApp.sessionManager.setIdentityToken(token); 
       deferred.resolve(token); 
      }).fail(function (err) { 
       ls.setItem('identityTokenUpdate', null); 
       ls.setItem('identityToken', null); 
       sfMailApp.analytics.trackEvent('LoadUserIdentityTokenAsync', 'Fail', { 
        user: sfMailApp.mailService.userEmail, 
        message: err ? JSON.stringify(err) : 'null' 
       }); 
       deferred.reject(err); 
      }); 
     } else { 
      sfMailApp.analytics.trackEvent('Item', 'Empty', { 
       user: sfMailApp.mailService.userEmail, 
       message: 'Error while getting identity token - inbox item is empty' 
      }); 
      sfMailApp.sessionManager.setIdentityToken(cachedIdentityToken); 
      return sfMailApp.utils.resolveDeferred(cachedIdentityToken); 
     } 

     return deferred.promise(); 
    } else { 
     sfMailApp.sessionManager.setIdentityToken(cachedIdentityToken); 
     return sfMailApp.utils.resolveDeferred(cachedIdentityToken); 
    } 
}; 


sfMailApp.OfficeManager.prototype._loadItemAsync = function (obj, name) { 

    if (sfMailApp.utils.isCommands() && sfMailApp.isCommandsMagicPixel) { 
     return sfMailApp.utils.rejectDeferred({ 
      message: 'Async Office JS API should not be called in Commands while inserting MagicPixel' 
     }); 
    } 

    var deferred = $.Deferred(); 

    var maxAttempCount = 5; 
    var attempInterval = 1000; 
    var attempCount = 0; 
    var _this = this; 

    function checkResult(asyncResult) { 
     var processFunc = function() { 
      try { 
       if (_this._checkProperyExists(obj, name)) { 
        obj[name](checkResult); 
       } else { 
        checkResult(null); 
       } 
      } catch (e) { 
       if (name !== 'loadCustomPropertiesAsync' && name !== 'getCallbackTokenAsync') { 
        sfMailApp.analytics.trackException(e, name + '.Fail', { 
         user: sfMailApp.mailService.userEmail, 
         error: e ? JSON.stringify(e) : null 
        }); 
       } 
       checkResult(null); 
      } 
     } 

     if ((sfMailApp.utils.isNullOrEmpty(asyncResult) || asyncResult.status !== Office.AsyncResultStatus.Succeeded) && attempCount < maxAttempCount) { 
      attempCount++; 
      if (attempCount <= 1) { 
       processFunc(); 
      } else { 
       setTimeout(processFunc, attempInterval); 
      } 
     } else { 
      if (asyncResult && asyncResult.status === Office.AsyncResultStatus.Succeeded) { 
       deferred.resolve(asyncResult.value); 
      } else { 
       var params = { 
        user: sfMailApp.mailService.userEmail 
       }; 
       if (asyncResult) { 
        params.status = asyncResult.status; 
        params.value = asyncResult.value; 
        params.error = JSON.stringify(asyncResult.error); 
       } 

       if (name !== 'loadCustomPropertiesAsync' && name !== 'getCallbackTokenAsync') { 
        sfMailApp.analytics.trackException(new Error(name + '.Fail'), '', params); 
       } 
       deferred.reject(asyncResult); 
      } 
     } 
    } 

    var inboxItem = this.getItem(); 

    if (obj && !obj.isFake && !inboxItem.isFake) { 
     checkResult(null); 
    } else { 
     deferred.resolve({}); 
    } 

    return deferred.promise(); 
}; 
+0

このエラーが発生するコードを使用できますか? –

+0

@MarcLaFleurご連絡ありがとうございます、コードが添付されています。 –

+0

私はあなたの参照するメソッドやプロパティが 'Execute'と呼ばれる場所を見ていません。どのラインが故障していますか? –

答えて

0

ありがとう:ここ

は、コードの一部です。私たちはこの問題を認識しており、現在調査中です。修正が確認されたら、この回答を更新します。

関連する問題