exchangewebservices - 从 Outlook WebAddin 生成的访问令牌出现未经授权的错误
问题描述
我正在尝试使用 Outlook Addin 中生成的访问令牌来下载邮件附件,它会引发未经授权的错误(401)。看起来 AccessToken 无效。在加载项中生成后 5 分钟内使用 accessToken 以确保避免过期代码。
遵循Office 文档中建议的步骤并创建了 C# 代码。我的代码要点可在此处获得:https ://gist.github.com/rajeevprasanna/6b0ba1db1599500a94451958b4f52d79
我的加载项清单可在此处获得,它要求ReadWriteMailbox权限:https ://gist.github.com/rajeevprasanna/5ef93e3df80f304826742bb81a0b4421#file-addin-manifest-xml-L64
我正在对 Office365 Outlook WebClient 进行试验,但我必须开发一个适用于所有 Outlook 实例以及 office365 和 Exchange 版本的统一解决方案。
此处建议的用于提取访问令牌的代码:
let cb = (asyncResult) => {
console.log('asyncResult => '+ R.toString(asyncResult));
};
var options = {
isRest: true,
asyncContext: { message: 'Hello World!' }
};
Office.context.mailbox.getCallbackTokenAsync(options, cb);
在进行 API 调用时,使用回调响应的值字段作为 accessToken。示例 getCallbackTokenAsync 响应:
{
"asyncContext": {
"message": "Hello World!"
},
"status": "succeeded",
"value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImthME5Hb19aNUkwRms1MXpKblZjT2tHbzFvbyJ9.eyJzbXRwIjoic3JpbmlAeGVub3Z1cy1hbWVyaWNhbmEuY29tIiwidmVyIjoiRXhjaGFuZ2UuQ2FsbGJhY2suVjIiLCJhcHBpZCI6IjAwMDAwMDAyLTAwMDAtMGZmMS1jZTAwLTAwMDAwMDAwMDAwMCIsImRlcGxveW1lbnRpZCI6IiIsInRpZCI6Imhvc3RpbmdjbG91ZGFwcC5uZXQiLCJhY3IiOiIxIiwiYXBwaWRhY3IiOiIwIiwic2NwIjoiTWFpbC5SZWFkV3JpdGUgTWFpbC5TZW5kIENhbGVuZGFycy5SZWFkV3JpdGUgQ29udGFjdHMuUmVhZFdyaXRlIiwiaXNzIjoiMDAwMDAwMDItMDAwMC0wZmYxLWNlMDAtMDAwMDAwMDAwMDAwIiwiYXVkIjoiaHR0cHM6Ly93ZWJtYWlsLmhvc3RpbmdjbG91ZGFwcC5jb20iLCJleHAiOjE1NDI4NzcwMDMsIm5iZiI6MTU0Mjg3NjEwM30.c3sknGGbw1Jrip9Ke1AcLyRL-6VnWSSWTGrwmeo6Z7xwBfKD3ppNkSqb4cVZIzuV-8udQps2abQ9scPMn0DNRbFRUNlBfkhHUqR2_JHrMcMptL6ZqF-a7_-gOMcBSgNdUCk5mhGDJs9qiEiM47thv5HZC97k-aYZ-iyU8N-8SgMNDc8vjBdS2nPSKp6FgQfezmjxADT-mbflxNUIwUDfOAys2l8v_Qw30t3LDca2AMmHyK3GbEaXejdO4muzC-ZrRMUVThIfFsMs0x67E2aY--lxSwDmrfcEnXODW0_J72RtFNDV5wjxf1QH6-xfP0A34qbUlmVnjjiCeYCeCCtNEg"
}
在做了一些跟踪并与示例项目进行比较后,我发现错误似乎与权限类型ReadWriteMailbox有关。如果使用权限类型ReadItem或ReadWriteItem完成查询,我可以获取附件
解决方案
推荐阅读
- mingw-w64 - 有没有办法在虚拟环境中的 Windows 上安装 mingw-64?
- amazon-web-services - CloudFormation:“当前不支持请求的配置”
- java - 如何验证表单页面中的整数输入?
- excel - 我收到一条我无法调试的错误消息
- r - R:汇总多个变量的异常值数量
- java - 如何运行一个在执行 main 方法后将继续工作的测试类
- jquery - 如何在 jquery 方法中添加带有逗号作为分隔符的标签?
- reactjs - 开玩笑地测试一个没有返回的函数
- python - MatlabExecutionError:用法:在 MATLAB Engine API for Python 中使用 Psychtoolbox
- spring-boot - 在@SpringBootTest 中测试@Async 注解的方法