我正在try 编写使用Graph API访问Microsoft日历的代码

    var calendars = await graphClient.Me.Calendars.Request().GetAsync();
    List<string> calendarNames = new List<string>();
       foreach (var calendar in calendars)
       {
         calendarNames.Add(calendar.Name);
       }

我正面临着奇怪的问题.

var calendars = await graphClient.Me.Calendars.Request().GetAsync();

但是编译器抛出错误,说"‘CalendarsRequestBuilder’没有‘RequestBuilder’的定义"

我包了Nuget套餐.

Microsoft.Graph Microsoft.Graph.Core Microsoft.Idendity.Client

我try 降级Graph库,但问题仍然存在.

推荐答案

Graph SDK v4中使用了Request()方法,最新的SDK v5go 掉了这个方法,可以直接调用GetAsync()

await graphClient.Me.Calendars.GetAsync();

获取访问令牌(基于您的 comments )

  • 创建一个实现IAccessTokenProvider的新类
  • GetAuthorizationTokenAsync人中创造IPublicClientApplication
public class TokenProvider : IAccessTokenProvider
{
    public AllowedHostsValidator AllowedHostsValidator => throw new NotImplementedException();

    public async Task<string> GetAuthorizationTokenAsync(Uri uri, Dictionary<string, object> additionalAuthenticationContext = null, CancellationToken cancellationToken = default)
    {
        var scopes = new[] { "Calendar.ReadWrite" };
        AuthenticationResult authResult;
        var publicClientApp = PublicClientApplicationBuilder.Create("clientId").Build();
        try
        {

            var accounts = await publicClientApp.GetAccountsAsync();
            authResult = await publicClientApp.AcquireTokenSilent(scopes, accounts.FirstOrDefault()).ExecuteAsync();
            return authResult.AccessToken;
        }
        catch (MsalUiRequiredException ex)
        {
            authResult = await publicClientApp.AcquireTokenInteractive(scopes).ExecuteAsync();
            return authResult.AccessToken;
        }
    }
}

现在,创建一个新的身份验证提供程序

var authenticationProvider = new BaseBearerTokenAuthenticationProvider(new TokenProvider());
var graphClient = new GraphServiceClient(authenticationProvider);

Upgrade guide from v4 to v5

Csharp相关问答推荐

MongoDB实体框架核心:表达必须可写

为什么使用DXGI输出复制和Direct 3D时捕获的图像数据全为零?

错误NU 1301:无法加载源的服务索引

CS0103 dlibdotnet和www.example.com facerect不在上下文中

当我使用NET6作为目标框架时,为什么DotNet使用NET8作为MS包?

ITypeLib2.GetLibStatistics()在C#中总是抛出AccessViolationException

从Blob存储中提取tar.gz文件并将提取结果上载到另一个Blob存储

内部接口和类的DI解析

Take()方法如何与IAsyncEnumerable一起使用

从ASP.NET Core中的枚举字段填充 Select 选项时,将默认的第一个选项添加为 Select 元素

在EF Core中,有没有什么方法可以防止在查询中写入相同的条件,而代之以表达式?

使用泛型可空类实现接口

将类移动到新命名空间后更新RavenDB Raven-Clr-Type

为什么此名称不再被识别?名称不存在于当前上下文中?

如何在Akka.NET中重新启动执行元时清除邮箱

我的命名管道在第一次连接后工作正常,但后来我得到了System.ObjectDisposedException:无法访问关闭的管道

ReadOnlyMemory访问基础索引的替代方案

在平行内使用跨度.用于循环

根据优先级整理合同列表

如何使用moq和xUnit对删除操作进行单元测试?