[英]Cannot get MailboxSettings from Microsoft Graph with .Net SDK
我正在嘗試使用 Ms Graph .Net SDK 和應用程序權限從 Microsoft Graph v1.0 獲取用戶郵箱設置。
我有正確的權限(MailboxSettings.Read 和 User.Read.All)並且他們是管理員同意的。
這是調用的代碼:
var settings = await graphClient.Users[{userId}].Request()
.Select(e => new
{
e.MailboxSettings
})
.GetAsync();
當我打電話時,我收到錯誤:
ErrorAccessDenied,拒絕訪問。 檢查憑據並重試。
我的 graphClient 對象(可能)沒有任何問題,因為我可以成功調用其他資源,例如:
var events = await graphClient.Users[{userId}].Events.Request()
我試圖向 API 發出 HTTP 請求,然后我得到了成功的響應。 (我在創建 graphClient 和獲取 API 調用的身份驗證令牌時使用相同的 clientId、clientSecret 等)。
這是我正在調用的端點:
https://graph.microsoft.com/v1.0/users/{userId}/mailboxSettings
為什么我在使用 SDK 時會出現錯誤? 我的請求不正確還是 SDK 中存在錯誤?
知道了。 這是一個錯誤:https ://github.com/microsoftgraph/msgraph-sdk-dotnet/issues/538 。 您需要讀取和寫入權限才能讀取 MailboxSettings。
您只能將它與郵箱設置.read 一起使用。
async Task GetMailboxSettings(GraphServiceClient client)
{
var mailboxSettingsUrl = client.Users["adelev@contoso.onmicrosoft.com"].RequestUrl + "/mailboxsettings";
HttpRequestMessage hrm = new HttpRequestMessage(HttpMethod.Get, mailboxSettingsUrl);
await client.AuthenticationProvider.AuthenticateRequestAsync(hrm);
HttpResponseMessage response = await client.HttpProvider.SendAsync(hrm);
if (response.IsSuccessStatusCode)
{
// Deserialize into OneNotePage object.
var content = await response.Content.ReadAsStringAsync();
MailboxSettings mailboxSettings = client.HttpProvider.Serializer.DeserializeObject<MailboxSettings>(content);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.