使用Microsoft Graph应用-only认证读取Outlook.com邮件遇错及可行性咨询
使用Microsoft Graph应用权限读取Outlook.com邮件的问题
我以微软的.NET应用权限教程为基础,尝试使用Microsoft Graph读取我的@outlook.com账户邮件,已完成以下操作:
- 在Azure账户中创建应用注册,将支持账户类型设置为“任何组织目录中的账户(任何Azure AD目录 - 多租户)和个人Microsoft账户(如Skype、Xbox)”
- 添加了如下API权限:

- 创建用于ClientSecretCredential的密钥
- 将我的@outlook.com账户邀请添加到Azure Active Directory中,不确定此步骤是否必要
初始化GraphServiceClient的代码如下:
if (_clientSecretCredential == null) { _clientSecretCredential = new ClientSecretCredential( _settings.TenantId, _settings.ClientId, _settings.ClientSecret, new TokenCredentialOptions { AuthorityHost = AzureAuthorityHosts.AzurePublicCloud }); } if (_appClient == null) { _appClient = new GraphServiceClient(_clientSecretCredential, // 使用默认范围,将请求应用注册中配置的范围 new[] {"https://graph.microsoft.com/.default"}); }
调用邮件端点时,根据传入的userId不同,会出现两种错误:
userId = "someone_outlook.com#EXT#@MyAzureAdminEmail.onmicrosoft.com"; // 出现下方错误1 userId = "someone@outlook.com"; // 出现下方错误2 userId = "<object_id_guid>"; // 出现下方错误2 var messages = await _appClient.Users[userId].MailFolders["inbox"].Messages .Request() .GetAsync();
错误1:
获取用户出错:状态码:NotFound
Microsoft.Graph.ServiceException: 代码:Request_ResourceNotFound
消息:资源'someone_outlook.com'不存在,或其查询的引用属性对象不存在。
错误2:
获取用户出错:状态码:Unauthorized
Microsoft.Graph.ServiceException: 代码:OrganizationFromTenantGuidNotFound
消息:租户GUID '[guid]'对应的租户不存在。
我未找到任何使用Microsoft Graph和应用-only认证读取Microsoft账户(@outlook.com、@hotmail.com、@live.com)邮件的示例,请问此场景是否可行?
谢谢,
Garry
内容的提问来源于stack exchange,提问作者Garry English
相关产品推荐
相关产品推荐

