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

如何通过GraphServiceClient发送SDK未支持的Microsoft Graph原始认证请求?

实现GraphServiceClient自定义REST请求完成来宾用户添加赞助者功能

你可以直接利用GraphServiceClient的自定义请求能力来实现这个功能,SDK会自动借助已配置的DefaultAzureCredential完成认证,无需手动处理令牌逻辑,类似az rest的使用方式。

核心实现代码

在ASP.NET Core控制器中注入GraphServiceClient后,编写以下代码:

private readonly GraphServiceClient _graphClient;

public YourController(GraphServiceClient graphClient)
{
    _graphClient = graphClient;
}

public async Task<IActionResult> AddSponsor(string guestUserId, string sponsorUserId)
{
    // 构造Graph API的添加赞助者端点路径
    var requestPath = $"/users/{guestUserId}/sponsors/$ref";
    
    // 构造符合Graph API要求的请求体
    var requestBody = new
    {
        "@odata.id" = $"https://graph.microsoft.com/v1.0/users/{sponsorUserId}"
    };
    
    // 发送POST请求,SDK自动处理认证
    var response = await _graphClient
        .Request(requestPath)
        .PostAsync(requestBody);
    
    if (response.IsSuccessStatusCode)
    {
        return Ok("赞助者已成功添加");
    }
    
    // 处理请求失败的情况
    var errorDetails = await response.Content.ReadAsStringAsync();
    return StatusCode((int)response.StatusCode, errorDetails);
}

关键说明

  • GraphServiceClient.Request(string path)方法支持传入自定义的Graph API相对路径,SDK会自动拼接基础服务地址(默认是https://graph.microsoft.com/v1.0/,若需使用beta版本可在初始化GraphServiceClient时指定)
  • 认证逻辑完全由DefaultAzureCredential自动处理,无需手动获取和附加访问令牌
  • 请求体必须严格遵循Graph API的要求,添加赞助者需要通过@odata.id指定赞助用户的完整资源路径
  • 确保DefaultAzureCredential对应的身份(如托管标识、登录用户等)已被授予User.ReadWrite.All或Directory.ReadWrite.All的Graph API权限(建议遵循最小权限原则选择合适的权限)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 02:52:08