我在Outlook中具有具有ReadWriteMailBox权限的加载项,但是当我致电GetCallbackTokenAsync({isrest:false:false},callback)时,我得到的令牌没有签名。基本上,我得到的令牌是格式xxxxxx.yyyyyy(而不是xxxxxx.yyyyyy.zzzzzz)。
这似乎是在过去的两天内刚刚开始发生的,但是,我上次从事这个项目的时候是大约4个月前,所以它可能已经开始发生了,但是我现在刚刚看到该错误。
EWS服务器是Office 365(https://outlook.office365.com/ews/exchange.asmx)。
我还注意到,致电getCallbackTokenAsync返回了同样的标记,在最后两天减去签名。
几乎将头发拉出后,我就可以工作了。
获得无效的JWT的最初问题是几个问题(或怀疑问题)的顶点。JWT实际上是有效的,尽管已过期,但是当我在调试时将值倾倒到F12工具控制台时,该值被截断为1024个字符。我在这里发现:https://stackoverflow.com/a/27844847/4520915。JWT已过期,因为它使用了缓存的令牌,而不是从EWS请求新的。我通过结束前景,清除IE的缓存和重新打开Outlook来解决这一问题,如Outlook加载团队的建议-MSFT。
现在的问题是让EWS接受令牌,因为我一直遇到401错误("访问被拒绝。检查您的凭据并重试。")。我发现这是因为我在Localhost上运行了加载项和随后的Azure功能。显然,EWS不喜欢Localhost。将加载项部署到开发环境后,我们都很好。
感谢Outlook附加组队-MSFT的帮助。