如何通过MS Graph API查询访问Teams数据存储位置及相关隐藏文件夹
查询Exchange存储Teams聊天隐藏文件夹内容的方法
前置权限要求
- 必须为你的Azure AD应用授予应用级的
Mailbox.Read.All(只读)或Mailbox.ReadWrite.All(读写)权限,且需要管理员完成权限授予 - 若同时需要查询OneDrive内的聊天文件,还需额外授予
Files.Read.All应用级权限
具体查询方法
1. 查询Exchange隐藏的Teams聊天文件夹内容
存储1对1、群组聊天文本内容的隐藏文件夹位于用户邮箱的非交互根目录下,文件夹名为TeamsMessagesData,调用Microsoft Graph接口时需要添加参数指定返回隐藏文件夹:
GET https://graph.microsoft.com/v1.0/users/{目标用户ID或用户主体名称(UPN)}/mailFolders?includeHiddenFolders=true&$filter=displayName eq 'TeamsMessagesData'
调用后拿到该文件夹的id后,继续调用下方接口即可列出文件夹内所有聊天消息内容:
GET https://graph.microsoft.com/v1.0/users/{目标用户ID或UPN}/mailFolders/{上一步拿到的文件夹ID}/messages
如果你的应用权限配置正确,也可以直接用已知文件夹名简化调用:
GET https://graph.microsoft.com/v1.0/users/{目标用户ID或UPN}/mailFolders/TeamsMessagesData/messages?includeHiddenFolders=true
2. 关联获取聊天内文件的OneDrive存储路径
如果你需要获取聊天中发送的文件实际存储地址,可以从上述接口返回的消息体中提取fileAttachment类型的附件信息,其中的contentUrl字段即为对应OneDrive文件的直链。
你也可以直接查询用户OneDrive中专门存储聊天文件的文件夹内容:
GET https://graph.microsoft.com/v1.0/users/{目标用户ID或UPN}/drive/root:/Microsoft Teams Chat Files:/children
注意:该隐藏文件夹仅允许合规、审计类场景访问,访问行为需要符合企业数据管理规则与微软相关服务条款,普通用户无权限访问该文件夹内容。
内容的提问来源于stack exchange,提问作者chaveser
相关产品推荐
相关产品推荐

