Microsoft graph api 授予权限时,Microsoft graph/me/mailFolders不工作

Microsoft graph api 授予权限时,Microsoft graph/me/mailFolders不工作,microsoft-graph-api,office365,Microsoft Graph Api,Office365,我有一个office 365帐户,我想访问我的电子邮件 我遵循Microsoft graph文档 我已选择了所要求的权限,如下所示: 我已请求令牌,但以下请求无效: GEThttps://graph.microsoft.com/v1.0/me/mailFolders { "error": { "code": "ErrorAccessDenied", "message":

我有一个office 365帐户,我想访问我的电子邮件

我遵循Microsoft graph文档

我已选择了所要求的权限,如下所示:

我已请求令牌,但以下请求无效:

GEThttps://graph.microsoft.com/v1.0/me/mailFolders

 {
    "error": {
        "code": "ErrorAccessDenied",
        "message": "Access is denied. Check credentials and try again."
    }
}
但当我使用下一个时,它会起作用:

GEThttps://graph.microsoft.com/v1.0/users('xxx。yyy@zzz.onmicrosoft.com“)/邮件文件夹(“收件箱”)/邮件


我需要使用每个人都在互联网上使用的第一个端点,我无法理解为什么我不为我工作。

在图中,
/me/
端点是当前登录用户的别名(基于令牌)。没有用户在场的应用程序将无法查询
/me/
,而应指定感兴趣用户的用户id(
/users/user id

如果您调用此endpint
/me/mailFolders
,这意味着列出当前登录用户的邮件文件夹。因此,您需要添加,并使用流来获取访问令牌,但除外

如果仍要使用应用程序权限,则需要调用此端点
/users/{id | userPrincipalName}/mailFolders


关于错误(资源不存在或其查询的引用属性对象之一不存在。),请参阅此错误的代码示例。

在图中,
/me/
端点是当前登录用户的别名(基于令牌)。没有用户在场的应用程序将无法查询
/me/
,而应指定感兴趣用户的用户id(
/users/user id

如果您调用此endpint
/me/mailFolders
,这意味着列出当前登录用户的邮件文件夹。因此,您需要添加,并使用流来获取访问令牌,但除外

如果仍要使用应用程序权限,则需要调用此端点
/users/{id | userPrincipalName}/mailFolders


关于此错误(资源不存在或其查询的引用属性对象之一不存在。),请参阅此错误的代码示例。

之所以发生这种情况,是因为您已将仅应用程序流配置为具有应用程序权限的客户端凭证流。这里的原因是应用程序令牌没有任何关于登录用户的“/me”的线索,因为应用程序在这里登录,而不是用户。在Azure AD中使用用户令牌和对应用程序的委派权限配置任何流,然后尝试该调用。您还可以使用它作为测试委派权限的一个很好的示例。@Shiva MSFTIdentity感谢您的回答。图形浏览器显示每个端点所需的委派权限。我的结论是,这是由于我在权限中找不到Directory.Read.All(经管理员同意)造成的,你知道为什么吗?我/邮件文件夹需要Mail.Read权限,而不需要管理员同意。尝试授予该权限并使用call@Shiva-MSFTIdentity我也添加了它,但是/me/messages在/me返回资源“32f1..”时出现相同错误,或者其查询的引用属性对象之一不存在之所以发生这种情况,是因为您已使用应用程序权限配置了仅应用程序流,如客户端凭据流。这里的原因是应用程序令牌没有任何关于登录用户的“/me”的线索,因为应用程序在这里登录,而不是用户。在Azure AD中使用用户令牌和对应用程序的委派权限配置任何流,然后尝试该调用。您还可以使用它作为测试委派权限的一个很好的示例。@Shiva MSFTIdentity感谢您的回答。图形浏览器显示每个端点所需的委派权限。我的结论是,这是由于我在权限中找不到Directory.Read.All(经管理员同意)造成的,你知道为什么吗?我/邮件文件夹需要Mail.Read权限,而不需要管理员同意。尝试授予该权限并使用call@Shiva-MSFTIdentity我也添加了它,但是/me/messages在/me返回资源'32f1..“不存在或其查询的引用属性对象之一不存在时有相同的错误。我有一个Oauth令牌,我可以获得/me的响应,但无法获得/me/mailFolders的响应,它显示错误访问被拒绝。但是我已经在我的AAD中添加了API权限“Microsoft Graph-Mail.Read”。@YitongFeng尝试,检查Mail.Read的状态修改权限(预览)。使用身份验证代码流登录帐户时,您需要接受权限。我有Oauth令牌,可以获得/me的响应,但无法获得/me/mailFolders的响应,它显示ErrorAccessDenied。但是我已经在我的AAD中添加了API权限“Microsoft Graph-Mail.Read”。@YitongFeng尝试,检查Mail.Read的状态修改权限(预览)。使用身份验证代码流登录帐户时,您需要接受该权限。