C# Microsoft Graph-尝试获取电子邮件列表时发出400个错误请求

C# Microsoft Graph-尝试获取电子邮件列表时发出400个错误请求,c#,oauth-2.0,office365,microsoft-graph-api,C#,Oauth 2.0,Office365,Microsoft Graph Api,尝试从我的Office365邮箱获取电子邮件,使用作为引用-使用。我可以拿到不记名代币。JWT的角色数组包含: roles: [ "Mail.ReadWrite", "Mail.Read" ] 这是我正在使用的代码。它在“最后一行”上得到400分 var web = new WebClient(); web.Headers.Add(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded

尝试从我的Office365邮箱获取电子邮件,使用作为引用-使用。我可以拿到不记名代币。JWT的角色数组包含:

roles: [  "Mail.ReadWrite", "Mail.Read" ]
这是我正在使用的代码。它在“最后一行”上得到400分

        var web = new WebClient();
        web.Headers.Add(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded");

        url = $"https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token";

        var reqparm = new System.Collections.Specialized.NameValueCollection();
        reqparm.Add("client_id", cliID);
        reqparm.Add("scope", "https://graph.microsoft.com/.default");            
        reqparm.Add("client_secret", secret);
        reqparm.Add("grant_type", "client_credentials");

        var responsebytes = web.UploadValues(url, "POST", reqparm);
        string responsebody = Encoding.UTF8.GetString(responsebytes);
        var data = JsonConvert.DeserializeObject<RootObject>(responsebody);

        web = new WebClient();
        web.Headers.Add( HttpRequestHeader.Authorization, "Bearer " + data.access_token);            
        var url2 = "https://graph.microsoft.com/v1.0/me/messages";
        var messages = web.DownloadString(url2);

在没有用户的情况下进行身份验证时,您不能使用
/me
。这是因为Graph的上下文中没有要将
/me
转换为的用户

对于此场景,您需要指定要为其列出消息的
user
资源:

https://graph.microsoft.com/v1.0/users/{userPrincipalName}/messages

在没有用户的情况下进行身份验证时,您不能使用
/me
。这是因为Graph的上下文中没有要将
/me
转换为的用户

对于此场景,您需要指定要为其列出消息的
user
资源:

https://graph.microsoft.com/v1.0/users/{userPrincipalName}/messages

https://graph.microsoft.com/v1.0/users/{userPrincipalName}/消息


正如@Marcleleur提到的,是用户prinicpal;因此我在电子邮件中尝试了用户名,但没有成功。我使用了校长和中提琴的完整电子邮件地址

https://graph.microsoft.com/v1.0/users/{userPrincipalName}/消息


正如@Marcleleur提到的,是用户prinicpal;因此我在电子邮件中尝试了用户名,但没有成功。我使用了完整的电子邮件地址来表示校长和中提琴!

@Marcleleur-我想这就是令牌的用途,用来标识“我”“,因为我在请求令牌时使用了租户ID。不管怎样,自从发布这个(后来放弃了)我尝试了那个URL,但是使用了电子邮件地址中的用户名,得到了404。前任:Joe@Domain.com---我会尝试:/users/joe/messages。我没有在Office365中设置帐户-我应该向管理员询问哪些信息?谢谢@Marcleleur-我想这就是令牌的用途,用来标识“我”,因为我在请求令牌时使用了租户ID。不管怎样,自从发布这个(后来放弃了)我尝试了那个URL,但是使用了电子邮件地址中的用户名,得到了404。前任:Joe@Domain.com---我会尝试:/users/joe/messages。我没有在Office365中设置帐户-我应该向管理员询问哪些信息?谢谢