要通过ADB2C Graph API获取登录历史,并且仅能查看7天前的记录,你可以使用Microsoft Graph API中的/auditLogs/signIns
终结点来获取登录历史。然后,你可以使用$filter
参数来限制返回结果的时间范围。
以下是一个示例代码,使用C#和Microsoft Graph SDK来实现这个功能:
using Microsoft.Graph;
using Microsoft.Identity.Client;
using System;
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)
.WithTenantId(tenantId)
.WithClientSecret(clientSecret)
.Build();
ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
DateTime sevenDaysAgo = DateTime.Now.AddDays(-7);
var signIns = await graphClient.AuditLogs.SignIns
.Request()
.Filter($"createdDateTime le {sevenDaysAgo.ToString("s")}")
.GetAsync();
foreach (var signIn in signIns)
{
Console.WriteLine($"User: {signIn.UserPrincipalName}");
Console.WriteLine($"Created: {signIn.CreatedDateTime}");
Console.WriteLine();
}
}
}
在示例代码中,你需要替换YourClientId
、YourClientSecret
和YourTenantId
为你自己的ADB2C应用程序的相关信息。
使用DateTime.Now.AddDays(-7)
可以获取当前时间的7天前的日期和时间,然后通过$filter
参数将查询限制为在这个时间之前创建的登录记录。
请注意,这只是一个示例代码,你可能需要根据你的具体需求进行更多的调整。