#c# #microsoft-graph-api
Вопрос:
Я следовал этому уроку: https://mihai-albert.com/2020/05/13/using-microsoft-graph-to-modify-excel-files-stored-in-sharepoint-online-with-c/
Когда я использую graph-explorer и выполняю GET https://graph.microsoft.com/v1.0/drives/{идентификатор диска}/root/поиск(q='{текст поиска}’)?выберите=имя,идентификатор,затем я без проблем получу идентификатор элемента. Но потом, когда я захочу получить книгу в своем приложении
private readonly GraphServiceClient _graphServiceClient;
public GraphService(
IOptions<AzureAdOptions> azureAdOptions)
{
var confidentialClientApplication = ConfidentialClientApplicationBuilder
.Create(azureAdOptions.Value.ClientId)
.WithTenantId(azureAdOptions.Value.TenantId)
.WithClientSecret(azureAdOptions.Value.ClientSecret)
.Build();
var authProvider = new ClientCredentialProvider(confidentialClientApplication);
_graphServiceClient = new GraphServiceClient(authProvider);
}
public async Task Test()
{
try {
var range = await _graphServiceClient.Drives[{drive-id}].Items[{item-id}]
.Request()
.GetAsync();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
затем я получаю ошибку itemnotfound, несмотря на ввод правильных идентификаторов.
Он может найти диск, если я просто добавлю эту часть, так что не похоже, что у меня проблемы с настройкой.
кто-нибудь сталкивался с этой проблемой или знает, как ее решить?
Ответ №1:
При использовании разрешений приложения для вызова GET /дисков/{идентификатор диска}/элементов/{идентификатор элемента} вашему приложению требуется одно из разрешений приложения, перечисленных здесь, скорее всего, Файлы.Читать.Все
Я заметил, что когда у вас есть acess_token, у которого нет одного из необходимых разрешений, вы получаете его не найденным, что вводит в заблуждение.
В вашем случае просто добавьте разрешения Files.Read.All приложения(требуется согласие администратора) в ваше приложение в Azure AD.
Комментарии:
1. Большое спасибо! На самом деле я в конце концов понял это, но забыл обновить этот пост. Ошибка действительно вводила в заблуждение.