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

如何在ASP.NET Core Web应用中创建Microsoft Graph客户端?

解决方法

在已启用Entra ID身份验证的ASP.NET Core Web应用中,推荐使用Microsoft.Identity.Web集成Microsoft Graph SDK的方式创建GraphServiceClient,这种方式无需手动处理令牌获取,且符合当前官方推荐的最佳实践,不存在弃用或破坏性变更问题。

步骤1:安装必要的NuGet包

首先安装Microsoft.Identity.Web的Graph集成包:

Install-Package Microsoft.Identity.Web.MicrosoftGraph

步骤2:在Program.cs中配置Graph服务

在已有的身份验证配置之后,添加Graph服务的注册,关联当前的身份认证方案,并指定所需的Graph权限:

builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
    .AddInMemoryTokenCaches();

// 配置Microsoft Graph服务,自动使用当前用户的身份令牌
builder.Services.AddMicrosoftGraph(options =>
{
    // 替换为你实际需要的Graph权限,这里是创建在线会议所需的权限
    options.Scopes = "OnlineMeetings.ReadWrite";
});

如果需要指定Graph API版本或其他自定义配置,可以扩展设置:

builder.Services.AddMicrosoftGraph(options =>
{
    options.Scopes = "OnlineMeetings.ReadWrite";
    options.BaseUrl = "https://graph.microsoft.com/v1.0"; // 指定API版本
});

步骤3:注入并使用GraphServiceClient

在控制器或业务服务中直接注入GraphServiceClient,即可在用户认证上下文下调用Graph API:

public class MeetingController : Controller
{
    private readonly GraphServiceClient _graphClient;

    // 通过构造函数注入GraphServiceClient
    public MeetingController(GraphServiceClient graphClient)
    {
        _graphClient = graphClient;
    }

    public async Task<IActionResult> CreateDemoMeeting()
    {
        // 确保用户已完成身份验证
        if (!User.Identity.IsAuthenticated)
        {
            return Challenge();
        }

        var meeting = new OnlineMeeting() { Subject = "demo meeting" };
        var result = await _graphClient.Me.OnlineMeetings.PostAsync(meeting);

        return Ok(new { MeetingUrl = result.JoinWebUrl });
    }
}

注意事项

  • 确保Azure应用注册中已添加Delegated类型的OnlineMeetings.ReadWrite权限(因为调用/me端点需要用户上下文),且已完成管理员同意(如果是租户级应用)。
  • 该方式会自动从当前用户的身份令牌缓存中获取Graph API的访问令牌,无需手动管理令牌生命周期。

内容的提问来源于stack exchange,提问作者g.pickardou

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 16:42:31