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

如何在C#中捕获Microsoft Graph的身份验证失败错误

解决InteractiveBrowserCredential身份验证失败捕获问题

你的代码卡住是因为GraphServiceClient在调用API时会自动触发身份验证流程,但如果用户关闭浏览器或取消授权,InteractiveBrowserCredential默认会无限等待,不会主动抛出异常。要解决这个问题,你可以通过以下方式处理:

1. 手动触发身份验证,提前捕获异常

不要依赖Graph客户端自动触发验证,而是先主动调用GetTokenAsync获取令牌,这样能在验证阶段就捕获失败情况:

var appSettings = _configuration.GetSection("AppSettings");

var tenantId = appSettings["Microsoft Graph:tenant id"];
var clientId = appSettings["Microsoft Graph:client id"];

var redirectUri = new Uri("http://localhost");

var options = new InteractiveBrowserCredentialOptions
{
    TenantId = tenantId,
    ClientId = clientId,
    AuthorityHost = AzureAuthorityHosts.AzurePublicCloud,
    RedirectUri = redirectUri,
    // 设置超时时间,比如30秒,避免无限等待
    Timeout = TimeSpan.FromSeconds(30),
};
            
var interactiveCredential = new InteractiveBrowserCredential(options);

var scopes = new []
{
    "Mail.Read"
};

try
{
    // 手动触发身份验证,获取访问令牌
    var tokenResult = await interactiveCredential.GetTokenAsync(new TokenRequestContext(scopes));
    
    // 验证成功后再初始化Graph客户端并调用API
    var graphServiceClient = new GraphServiceClient(interactiveCredential, scopes);
    var user = graphServiceClient.Me;
    var mailFolders = await user.MailFolders.GetAsync();

    // ... 后续逻辑
}
catch (AuthenticationFailedException ex)
{
    // 捕获身份验证失败,比如用户选择错误邮箱、授权被拒绝等
    // 处理异常逻辑
}
catch (OperationCanceledException ex)
{
    // 捕获超时或用户关闭浏览器导致的取消操作
    // 处理异常逻辑
}
catch (Exception ex)
{
    // 其他异常
}

2. 关键配置说明

  • Timeout属性:在InteractiveBrowserCredentialOptions中设置Timeout,当用户长时间未完成验证(比如关闭浏览器),会触发OperationCanceledException,避免代码无限卡住。
  • 手动调用GetTokenAsync:提前触发验证流程,把身份验证的异常捕获提前到API调用之前,避免Graph客户端调用时卡住。
  • 捕获特定异常:
    • AuthenticationFailedException:直接对应身份验证失败场景,比如用户拒绝授权、账号验证不通过等。
    • OperationCanceledException:对应超时或用户主动取消验证(关闭浏览器)的场景。

3. 额外优化

如果需要更精细控制验证窗口的行为,可以在InteractiveBrowserCredentialOptions中配置BrowserCustomization,比如设置窗口大小,但基础场景下上述配置已经足够解决你的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 11:11:06