API-интерфейс SharePoint: не удается аутентифицировать Sites.FullControl.All в потоке client_credential - PullRequest
1 голос
/ 23 марта 2020

У меня есть приложение, которое хочет получить доступ к SharePoint API. Я зарегистрировал его в AD и дал ему следующие разрешения:

enter image description here

Но когда я прошу его пройти проверку подлинности со следующими областями

    - https://graph.microsoft.com/User.Read.All
    - https://graph.microsoft.com/Group.Read.All
    - https://graph.microsoft.com/Sites.Read.All
    - https://graph.microsoft.com/Calendars.Read.Shared
    - https://graph.microsoft.com/MailboxSettings.Read
    - https://graph.microsoft.com/Files.Read.All
    - https://graph.microsoft.com/Directory.Read.All
    - https://graph.microsoft.com/AuditLog.Read.All
    - https://graph.microsoft.com/AuditLog.Read.All
    - offline_access
    - https://manage.office.com/ActivityFeed.Read
    - https://microsoft.sharepoint-df.com/Sites.FullControl.All
    - https://microsoft.sharepoint-df.com/Sites.Read.All
    - https://microsoft.sharepoint-df.com/User.Read.All

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

invalid_client&error_description=AADSTS650053: 
enter code here`The application 'XXX' asked for scope
'Sites.FullControl.All' that doesn't exist on the resource
'00000003-0000-0ff1-ce00-000000000000'. 
Contact the app vendor.

Что это значит, что это that doesn't exist on the resource? Со всеми остальными областями (кроме SharePoint) все работает нормально

1 Ответ

0 голосов
/ 14 апреля 2020

Похоже, что Sites.FullControl.All перемещен в раздел Graph API, но попытка добавить его на портал Azure приводит к другой ошибке, говорящей о том, что разрешение в настоящее время не поддерживается (см. На снимок экрана ниже).

В моем тестовом приложении мне удалось использовать AllSites.FullControl (AllSites как одно слово, без точек), а затем перечислить все сайты в клиенте SharePoint Online с MSAL для. NET.

var app = PublicClientApplicationBuilder.Create(MyAppId)
    .WithAuthority("https://login.microsoftonline.com/common", false)
    .WithDefaultRedirectUri()
    .Build();

return await app
    .AcquireTokenInteractive(new string[] { "https://tenantxx.sharepoint.com/.default" })
    .WithParentActivityOrWindow(parentWindow) // optional, used to center the browser on the window
    .WithPrompt(Prompt.SelectAccount)
    .ExecuteAsync();

Разрешения API на портале Azure: API Permissions in the portal

...