由于Microsoft已从2023年的基本身份验证切换到不记名身份验证,因此我无法执行邮件阅读操作。我正在尝试使用GraphServiceClient进行阅读,但出现了以下错误,您能帮助我吗?
CS 0246-->找不到类型或命名空间名称“DelegateAuthenticationProvider”(是否缺少using指令或程序集引用?CS1061-->“MeRequestBuilder”不包含“Request”的定义,并且找不到接受“MeRequestBuilder”类型的第一个参数的可访问扩展方法“Request”(您是否缺少using指令或程序集引用?)
using Microsoft.Graph;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Web;
using System.Net.Http.Headers;
using Microsoft.Identity.Client;
namespace GraphTest.Helpers{
public class GraphHelper{
public static async Task<CachedUser> GetUserDetailsAsync(string accessToken){
var graphClient = new GraphServiceClient(new DelegateAuthenticationProvider(async (requestMessage) =>{
requestMessage.Headers.Authorization =new AuthenticationHeaderValue("Bearer", accessToken);
}));
var user = await graphClient.Me.Request().Select(u =>new{
u.DisplayName,u.Mail,u.UserPrincipalName}).GetAsync();
return new CachedUser {
Avatar = string.Empty,DisplayName = user.DisplayName,Email = string.IsNullOrEmpty(user.Mail)?user.UserPrincipalName : user.Mail};
}
}
}
1条答案
按热度按时间wkyowqbh1#
根据我的测试,如果你使用的访问令牌是正确的,并且nuget包的版本是正确的,那么你的代码应该可以工作:
在我的代码片段中,我只是生成一个访问令牌,其中包含足够的API权限来调用Ms graph API,然后它就为我工作了。我用的 Package 是