You need to enable JavaScript to run this app. 如何在C#中使用Microsoft Graph Beta客户端完成身份认证?
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中使用Microsoft Graph Beta客户端完成身份认证?

C#调用CloudPC REST API时DeviceCodeProvider无法解析的解决方法

问题说明

通过C#调用CloudPC REST API需要使用Beta版NuGet包Microsoft.Graph.Beta,参考旧版非Beta客户端的认证示例编写代码时,DeviceCodeProvider类无法被正常解析,需要找到替代实现方案。

官方推荐替代方案

DeviceCodeProvider是已废弃的Microsoft.Graph.Auth配套包中的类,目前新版Microsoft Graph SDK(包括正式版和Beta版)均已改用Azure.Identity包中的凭证类实现身份认证,DeviceCodeCredential就是官方推荐的替代组件。

完整可运行实现代码

首先安装必要的NuGet依赖:

  • Microsoft.Graph.Beta
  • Azure.Identity

随后按如下逻辑编写认证代码:

using Azure.Identity;
using Microsoft.Graph.Beta;

// 按实际业务需求配置Graph API权限范围
var graphScopes = new[] { "CloudPC.ReadWrite.All" };

// 配置设备码认证参数
var deviceCodeOptions = new DeviceCodeCredentialOptions
{
    ClientId = "替换为你的Azure AD应用客户端ID",
    TenantId = "替换为你的租户ID,多租户场景可填common",
    // 设备码认证回调,向用户输出认证提示信息
    DeviceCodeCallback = (info, _) =>
    {
        Console.WriteLine(info.Message);
        return Task.CompletedTask;
    }
};

// 实例化认证凭证
var deviceCodeCredential = new DeviceCodeCredential(deviceCodeOptions);

// 初始化Beta版Graph客户端
var graphClient = new GraphServiceClient(deviceCodeCredential, graphScopes);

常见运行异常排查

如果调整后代码仍然无法正常运行,优先检查以下配置项:

  • Azure AD应用注册页面已开启「允许公共客户端流」开关
  • 应用已被分配对应的CloudPC API权限,且管理员已完成权限同意
  • 代码中填写的客户端ID、租户ID与Azure AD中注册的应用信息一致

可使用官方提供的Graph SDK测试工具示例进行调试,工具内置了DeviceCodeCredential的完整使用模板,可快速验证API调用逻辑是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 09:39:02