oauth2.0 我在用于读取Microsoft 365邮件的graphService客户端中出现错误

8nuwlpux  于 2023-06-21  发布在  其他
关注(0)|答案(1)|浏览(145)

由于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};

}

}

}
wkyowqbh

wkyowqbh1#

根据我的测试,如果你使用的访问令牌是正确的,并且nuget包的版本是正确的,那么你的代码应该可以工作:

在我的代码片段中,我只是生成一个访问令牌,其中包含足够的API权限来调用Ms graph API,然后它就为我工作了。我用的 Package 是

<PackageReference Include="Microsoft.Graph" Version="4.43.0" />
    <PackageReference Include="Microsoft.Identity.Client" Version="4.52.0" />
    <PackageReference Include="Microsoft.Identity.Web" Version="1.26.0" />
    <PackageReference Include="Microsoft.Identity.Web.MicrosoftGraph" Version="1.26.0" />
    <PackageReference Include="Microsoft.Identity.Web.UI" Version="1.26.0" />

相关问题