最近更新的 Microsoft Graph API 的版本中,AAD群组增量查询(delta)不再返回成员 "@delta" 字段。相反,可以使用增量查询的方式来获取群组的成员变化。
下面是一个使用 Microsoft Graph API 进行增量查询群组成员变化的代码示例:
// 安装 NuGet 包 Microsoft.Graph
using Microsoft.Graph;
using Microsoft.Identity.Client;
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static async Task Main(string[] args)
{
string clientId = "YourClientId";
string clientSecret = "YourClientSecret";
string tenantId = "YourTenantId";
IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithClientSecret(clientSecret)
.WithAuthority($"https://login.microsoftonline.com/{tenantId}")
.Build();
ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
string groupId = "YourGroupId";
string token = null;
do
{
var request = graphClient.Groups[groupId].Members
.Request()
.Top(100)
.GetHttpRequestMessage();
if (!string.IsNullOrEmpty(token))
{
request.Headers.Add("ConsistencyLevel", "eventual");
request.Headers.Add("deltaLink", token);
}
var response = await graphClient.HttpProvider.SendAsync(request);
var content = await response.Content.ReadAsStringAsync();
if (response.IsSuccessStatusCode)
{
var members = JsonConvert.DeserializeObject>(content);
var deltaLink = response.Headers.FirstOrDefault(h => h.Key == "deltaLink").Value.FirstOrDefault();
// 处理成员变化
foreach (var member in members)
{
Console.WriteLine(member.Id);
}
token = deltaLink;
}
else
{
// 处理错误
Console.WriteLine(content);
}
} while (!string.IsNullOrEmpty(token));
}
}
上述代码使用了 Microsoft Graph SDK,并通过客户端凭据授权方式进行身份验证。请将 "YourClientId","YourClientSecret" 和 "YourTenantId" 替换为你自己的应用程序注册信息。
在主循环中,我们使用 GetHttpRequestMessage
方法创建一个请求,设置 ConsistencyLevel
为 eventual
,并将 deltaLink
添加到请求头中。然后发送请求,并处理响应中的成员变化。
希望这个代码示例对你有帮助!
上一篇:AAD群组的配额
下一篇:AAD身份验证获取访问令牌