Вот код, который я тестирую Это с: < /p>
Код: Выделить всё
var clientId = "myClientId";
var clientSecret = "myClientSecret";
var tenantId = "myTenantId";
var authority = "https://login.microsoftonline.com/" + tenantId;
var siteUrl = "https://myorg.sharepoint.com";
var app = new ConfidentialClientApplicationBuilder
.Create()
.WithClientSecret(clientSecret)
.WithAuthority(authority)
.WithTenantId(tenantId)
.Build();
var paramBuilder = app.AcquireTokenForClient(new[] { siteUrl + "/.default" });
var authResult = await paramBuilder.ExecuteAsync();
// authResult has successfully retrieved an access token at this point
var context = new ClientContext(siteUrl);
context.ExecutingWebRequest += (_, e) =>
{
e.WebRequestExecutor.RequestHeaders["Authorization"] = "Bearer " + authResult.AccessToken;
}
context.Load(context.Web);
await context.ExecuteQueryAsync(); // 401 is thrown here
var title = context.Web.Title;
< /code>
Я пробовал несколько разных способов обойти это безрезультатно: < /p>
[list]
[*] Я пошел в центр администратора моего сайта SharePoint и предоставления приложения полные разрешения на полные разрешения, а также предоставить приложению эти разрешения в Azure Ad. Похоже, что это ничего не изменило, я все еще получаю то же самое 401. Я использовал новый идентификатор клиента и секрет клиента, которые были сгенерированы, и я смог вернуть токен доступа. Не повезло, все еще получите 401 Calling ClientContext.exeCuteQueryAsync ()
[/list]
»Принципал ресурса с именем https: // myorg. SharePoint.com/sites/mysite не был найден в названном арендаторе (мой арендатор). запрос на аутентификацию не тому арендатору. Затем, предоставляя URL-адрес для конкретного сайта ClientContext . Я пытался использовать URL-адрес V1, URL-адрес V2, без специфического URL-адреса, только адрес полномочий по умолчанию + идентификатор арендатора). >
Статья документации MS предлагает добавление дополнительного « /» к запрошенному. https://myorg.sharepoint.com/sites/mysite//.default). Похоже, что это ничего не изменило. Полем Я использую идентификатор ClientId, ClientSecret и арендатора, который копируется непосредственно со страницы приложения AAD. Код, который я использую выше, рекомендуется Microsoft для использования нового пакета SharePointonline.csom. Чего мне здесь не хватает?
Подробнее здесь: https://stackoverflow.com/questions/754 ... cess-token