[英]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權限,我已經為我的 Azure AD 應用程序提供了 Graph API 並且我能夠獲取所有消息,但只有當我嘗試使用 $expand 獲取屬性時消息類型的 ItemAttachment 我被拒絕訪問。
我找不到與在 microsoft doc 上工作可能需要的特定權限相關的任何內容( https://docs.microsoft.com/en-us/graph/api/attachment-get?view=graph-休息-1.0&tabs=java )。
我還提到了一個類似的帖子( 如何通過 Microsoft Graph API 檢索 itemAttachment 的內容)並且也沒有找到任何東西。
以下是詳細信息:
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 應用程序具有以下權限:
我正在使用的 microsoft graph API SdkVersion 是:graph-java/v2.3.1。
我不確定我是否在這里遺漏了什么。 感謝是否有人可以指導我解決這個問題。
正如 Shiva 在評論中提到的,您在代碼中使用graphClient.me()
,但您分配了“ Application ”類型的Mail.Read
權限。 如果分配“應用程序”類型的權限,它只需要client_id
, scope
, client_secret
, grant_type
來獲取訪問令牌。 因此訪問令牌不包含用戶信息,廣告不知道me
是誰,因此無法識別代碼graphClient.me()
。
如果你想運行代碼( graphClient.me()...
)成功,你需要添加權限Mail.Read
在“ Delegated ”類型而不是“ Application ”類型(按照下面截圖中的步驟,也不要忘記請授予管理員同意)。
當您使用應用程序權限時,它就像您有一個守護程序應用程序一樣,您用於守護程序應用程序的流程將產生 App 令牌。 這無法識別/me
,因為這里沒有用戶。 所以嘗試使用/users/{userid}/messages
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.