调用Microsoft Graph API获取Teams频道消息仅返回30天内容的问题
关于Teams API拉取历史消息仅返回30天数据的问题解答
- API默认限制导致:Graph API的
channels/messages端点默认仅返回最近30天的消息,这是API本身的设定,和你的分页操作无关。哪怕Teams UI能看到更早的内容,API不会主动返回超出30天范围的数据。 - 必须手动指定时间范围:要获取更早的消息,需通过
$filter参数添加时间范围筛选,示例请求:
日期需采用ISO 8601 UTC格式,比如上面的示例是筛选2025年7月1日及之前的消息。{graph_url}/teams/{team_id}/channels/{channel_id}/messages?$top=50&$filter=createdDateTime le '2025-07-01T00:00:00Z' - 分页逻辑无需额外修改:添加时间过滤后,后续通过
data.@odata.nextLink拉取下一页时,nextLink会自动携带已设置的过滤参数,无需手动调整,正常分页即可获取所有符合时间范围的消息。 - 权限二次确认:确保你的应用已获得
ChannelMessage.Read.All(应用权限)或ChannelMessage.Read(委派权限),虽然你能拿到30天内的数据,但权限不足也可能限制历史消息的获取,可在Azure AD后台确认权限配置。
内容的提问来源于stack exchange,提问作者Bobby
相关产品推荐
相关产品推荐

