Я пытаюсь загрузить содержимое файла из SharePoint Online с помощью Azure Аутентификация приложения на основе AD. Мне удалось получить метаданные элемента списка с помощью этого механизма аутентификации с помощью API CSOM и Rest, но когда дело доходит до контента, происходит сбой с 401 неавторизованными ошибками. Я проверил, что токен аутентификации одинаков для метаданных и контента, но все равно не работает.
Я создавал аутентифицированный клиентский контекст с использованием библиотек PnP.Core следующим образом:
clientContext = new OfficeDevPnP.Core.AuthenticationManager().GetAzureADAppOnlyAuthenticatedContext(this.webUri.ToString(), this.settings.SharePointOnlineClientAppId, this.settings.SharePointOnlineTenantName, this.settings.SharePointOnlineCertPath, this.settings.SharePointOnlineCertPassword);
Затем я использую OpenBinary Direct для получения содержимого файла:
using (var clientContext = this.GetContext(targetUri))
{
clientContext.ExecuteQuery();
using (var fileInfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(clientContext, encodedPath))
{
using (FileStream writer = System.IO.File.Create(downloadPath))
{
fileInfo.Stream.CopyTo(writer);
}
}
}
Это работало нормально с аутентификацией пользователя при предоставлении имени пользователя и пароля, но это больше не вариант для меня.
Кто-нибудь успешно загружал контент из SharePoint Online, используя только аутентификацию приложений?
Является ли API отдыха или CSOM правильным подходом для этого или есть другой API, который можно использовать?