You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Microsoft Graph API技术问询:如何获取非活跃用户列表

如何通过Microsoft Graph API获取非活跃用户列表

要获取非活跃用户,核心是基于**用户登录活动(signInActivity)**进行筛选,通常将超过指定时长未登录(或从未登录)的用户定义为非活跃用户。以下是具体实现方案:

实现逻辑与代码修改

1. 定义非活跃阈值

首先确定判定非活跃的时间阈值(比如90天),然后基于UTC时间计算阈值点(lastSignInDateTime存储的是UTC时间)。

2. 添加筛选条件

在你的原代码基础上,通过.Filter()方法添加筛选规则,覆盖两种非活跃场景:

  • 有登录记录,但最后登录时间早于阈值
  • 从未登录过(lastSignInDateTime为null)

修改后的代码如下:

var graphClient = MicrosoftGraph.GetGraphClient(tenantId, clientId);
// 设置非活跃阈值:这里以90天为例,计算UTC时间的阈值点
var inactiveThreshold = DateTime.UtcNow.AddDays(-90).ToString("o");

var users = await graphClient.Users
    .Request()
    .Select("displayName,signInActivity")
    // 筛选非活跃用户:最后登录早于阈值 或 无登录记录
    .Filter($"signInActivity/lastSignInDateTime le {inactiveThreshold} OR signInActivity/lastSignInDateTime eq null")
    .GetAsync();

关键注意事项

  • 权限要求:必须配置User.Read.All或Directory.Read.All的应用权限(委派权限无法获取全部用户的登录活动数据)
  • 时区处理:务必使用UTC时间计算阈值,避免因时区差异导致筛选结果错误
  • 分页处理:Graph API默认单次返回最多100条数据,如果租户用户较多,需要使用PageIterator遍历所有分页结果
  • 特殊用户:部分系统用户(如服务主体)可能没有signInActivity数据,会被纳入非活跃列表,可根据需求添加额外筛选规则排除

内容的提问来源于stack exchange,提问作者redoc01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 01:05:25