2017-06-21 21 views
1

當我嘗試使用此Microsoft Graph查詢列出SharePoint站點中的所有列表時,它將返回401錯誤。但閱讀清單工作正常。Microsoft圖表獲取站點中的列表返回401

{ 
"error": { 
    "code": "unauthenticated", 
    "message": "Access denied. You do not have permission to perform this action or access this resource.", 
    "innerError": { 
     "request-id": "6929864e-9d14-4911-9d7e-d0a29259e05f", 
     "date": "2017-06-21T21:00:15" 
    } 
} 

}

謝謝

回答

1

通常,401響應表示服務器需要進行身份驗證的信息您的API請求或者從請求中丟失或者存在,但無論如何無效。我建議你:

1)確認授權頭部存在於失敗的請求中。

2)如果存在,然後驗證在失敗的請求的授權標頭的內容是相同到在成功請求的授權標頭的內容。

如果你在兩個請求中發送完全相同的授權頭部,那麼我不希望服務器爲一個操作返回401響應,而不是另一個操作。 (如果這是一個權限問題 - 即用戶有權執行操作-A而不是操作-B,那麼我希望服務器返回一個403 Forbidden響應操作-B - 不是401未經授權的響應。)


更新(一些額外的想法)

它看起來既像操作需要這兩個接入範圍之一:

  • Sites.Read.All
  • Sites.ReadWrite.All

您應該確認你在失敗的請求的Authorization頭指定令牌有這些範圍的至少一個(但正如我剛纔所說,我期望的服務器如果您沒有正確的訪問範圍,則返回403)。

此外,如果您通過OAuth獲取訪問令牌而用戶沒有提供授權,那麼這個答案中的信息可能會有所幫助:How to use OAuth when there is no user delegation? -- Microsoft Graph API。在這篇文章描述的場景中,服務器正在返回一個401響應,因爲開發人員沒有明確獲得他們試圖執行的操作的管理員同意。

+0

@Nico - 我已更新我的答案以添加其他信息。你有沒有在這個問題上取得進展? –