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个