Демон Microsoft Graph API — ошибка: сообщение ResourceNotFound: ресурс не найденC#

Место общения программистов C#
Ответить
Anonymous
 Демон Microsoft Graph API — ошибка: сообщение ResourceNotFound: ресурс не найден

Сообщение Anonymous »

Я пытаюсь создать демон с помощью Microsoft Graph API v1.0.

Я зарегистрировал свое приложение с разрешением приложения Calendars.ReadWrite и User.Read.All с предоставленным согласием администратора.

Я правильно получаю токен доступа и вызываю GetUserId, который возвращает идентификатор пользователя для настройки requestURI.

После этого я хочу получить календарь Outlook:

var id = await GetUserId(result.AccessToken);

var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

String requestURI = $"https://graph.microsoft.com/v1.0/users/{id}/calendars";

var response = await httpClient.GetAsync(requestURI);
var responseString = await response.Content.ReadAsStringAsync();


но я получаю эту ошибку:

{
"error": {
"code": "ResourceNotFound",
"message": "Resource could not be discovered.",
"innerError": {
"request-id": "5ecd547b-9281-4824-94e5-095691e759aa",
"date": "2020-01-14T16:44:16"
}
}
}


Когда я устанавливаю requestURI для пользователей/{id или организации, запрос работает нормально, но добавление /calendars, /events или /mailFolder приводит к указанной выше ошибке.

Думаю, моя проблема в том, что я использовал Личный кабинет. Нужно ли мне использовать рабочую или учебную учетную запись? Можно ли использовать Личный кабинет? Есть ли другая причина моей ошибки?

Обновление: код для получения токена:

app = ConfidentialClientApplicationBuilder
.Create(ClientId)
.WithClientSecret(ClientSecret)
.WithAuthority($"https://login.microsoftonline.com/{Tena ... rosoft.com")
.Build();
string[] scopesClient =
new string[] { $"https://graph.microsoft.com/.default" };
AuthenticationResult result = null;
try
{
result = await app.AcquireTokenForClient(scopesClient).ExecuteAsync();
}
catch (MsalServiceException ex) when(ex.Message.Contains("AADSTS70011"))
{

}


Подробнее здесь: https://stackoverflow.com/questions/597 ... -could-not
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»