Microsoft Graph API "Access is denied" 在尝试使用 $expand(microsoft.graph.itemattachment/item) 读取 ItemAttachment 属性时
Microsoft Graph API "Access is denied" while trying to read the ItemAttachment Properties with $expand(microsoft.graph.itemattachment/item)
我正在尝试检索消息类型的 ItemAttachment 的属性。我已提供所有必需的权限并能够接收 ItemAttachment 属性。
但是当我使用 $expand 获取 ItemAttachment 消息的更多属性时。我收到 拒绝访问错误。
根据我的阅读,它说您需要 Mail.read 权限,我已经为 Graph API 和我的 Azure AD 应用程序提供了权限我能够获取所有消息,但只有当我尝试使用 $expand 获取消息类型的 ItemAttachment 的属性时,我才收到访问被拒绝的消息。
我找不到与在 Microsoft 文档 (https://docs.microsoft.com/en-us/graph/api/attachment-get?view=graph-rest-1.0&tabs=java) 上运行可能需要的特定权限相关的任何内容。
我也提到了类似的 post (),但也没有找到任何东西。
详情如下:
Java代码:
graphClient.me().messages(messageId).attachments(attachmentId)
.buildRequest()
.expand("microsoft.graph.itemattachment/item")
.get();
这会生成如下所示的 REST 调用:
GET https://graph.microsoft.com/v1.0/me/messages/A2zjArAAA=/attachments/5AlfysT-Cz27w=?$expand=microsoft.graph.itemattachment/item
但我遇到了“拒绝访问”错误。
403 : Forbidden
Cache-Control : private
Content-Length : 101
Content-Type : application/json; odata.metadata=minimal; odata.streaming=true; IEEE754Compatible=false; charset=utf-8
{
"error": {
"code": "ErrorAccessDenied",
"message": "Access is denied. Check credentials and try again."
}
}
我的应用程序 Azure Active Directory 应用程序具有以下权限:
我使用的微软图API SdkVersion是:graph-java/v2.3.1.
我不确定我是否遗漏了这里的任何内容。
如果有人可以指导我解决这个问题,我将不胜感激。
正如 Shiva 在评论中提到的,您在代码中使用了 graphClient.me()
,但您分配了“Application”类型的 Mail.Read
权限。如果分配“Application”类型的权限,它只需要client_id
、scope
、client_secret
、grant_type
来获取访问令牌。所以访问令牌不包含用户信息,广告不知道谁是 me
,所以代码 graphClient.me()
无法识别。
如果你想运行代码(graphClient.me()...
)成功,你需要在“Delegated”类型中添加权限Mail.Read
但不是“Application”类型(按照下面屏幕截图中的步骤操作,也不要忘记授予管理员同意)。
当您使用应用程序权限时,它就像您拥有一个守护程序应用程序一样接缝,并且您用于守护程序应用程序的流程将生成 App 令牌。这无法识别 /me
因为这里没有用户。所以尝试使用 /users/{userid}/messages
.
我正在尝试检索消息类型的 ItemAttachment 的属性。我已提供所有必需的权限并能够接收 ItemAttachment 属性。 但是当我使用 $expand 获取 ItemAttachment 消息的更多属性时。我收到 拒绝访问错误。
根据我的阅读,它说您需要 Mail.read 权限,我已经为 Graph API 和我的 Azure AD 应用程序提供了权限我能够获取所有消息,但只有当我尝试使用 $expand 获取消息类型的 ItemAttachment 的属性时,我才收到访问被拒绝的消息。
我找不到与在 Microsoft 文档 (https://docs.microsoft.com/en-us/graph/api/attachment-get?view=graph-rest-1.0&tabs=java) 上运行可能需要的特定权限相关的任何内容。
我也提到了类似的 post (
详情如下:
Java代码:
graphClient.me().messages(messageId).attachments(attachmentId)
.buildRequest()
.expand("microsoft.graph.itemattachment/item")
.get();
这会生成如下所示的 REST 调用:
GET https://graph.microsoft.com/v1.0/me/messages/A2zjArAAA=/attachments/5AlfysT-Cz27w=?$expand=microsoft.graph.itemattachment/item
但我遇到了“拒绝访问”错误。
403 : Forbidden
Cache-Control : private
Content-Length : 101
Content-Type : application/json; odata.metadata=minimal; odata.streaming=true; IEEE754Compatible=false; charset=utf-8
{
"error": {
"code": "ErrorAccessDenied",
"message": "Access is denied. Check credentials and try again."
}
}
我的应用程序 Azure Active Directory 应用程序具有以下权限:
我使用的微软图API SdkVersion是:graph-java/v2.3.1.
我不确定我是否遗漏了这里的任何内容。 如果有人可以指导我解决这个问题,我将不胜感激。
正如 Shiva 在评论中提到的,您在代码中使用了 graphClient.me()
,但您分配了“Application”类型的 Mail.Read
权限。如果分配“Application”类型的权限,它只需要client_id
、scope
、client_secret
、grant_type
来获取访问令牌。所以访问令牌不包含用户信息,广告不知道谁是 me
,所以代码 graphClient.me()
无法识别。
如果你想运行代码(graphClient.me()...
)成功,你需要在“Delegated”类型中添加权限Mail.Read
但不是“Application”类型(按照下面屏幕截图中的步骤操作,也不要忘记授予管理员同意)。
当您使用应用程序权限时,它就像您拥有一个守护程序应用程序一样接缝,并且您用于守护程序应用程序的流程将生成 App 令牌。这无法识别 /me
因为这里没有用户。所以尝试使用 /users/{userid}/messages
.