UnauthorizedAccessException при запросе sharepoint для элементов в списке - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь получить доступ к элементам списка на моем сайте sharepoint.Я создал clientId и secretId на странице "https://XXXXXX.sharepoint.com/sites/XXXXX/_layouts/15/appregnew.aspx". Затем я создаю правило доступа на странице" https://XXXXX.sharepoint.com/sites/XXXXX/_layouts/15/appinv.aspx". На этой странице я установил код XML для правила доступа, например:

<AppPermissionRequests><AppPermissionRequest 
   Scope="http://sharepoint/content/sitecollection" 
   Right="FullControl"/></AppPermissionRequests>

Я создаю правило и подтверждаю его на следующей странице.

В моем приложении я получаю токен с этим кодом

let payload = `grant_type=client_credentials
            &client_id=${clientId}@${tenantId}
            &client_secret=${clientSecret}
&resource=${resource}/${domain}@${tenantId}`;
        let authOptions = {
            hostname: 'accounts.accesscontrol.windows.net',
            path: `/${tenantId}/tokens/OAuth/2`,
            method: 'POST',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded',
                'Content-Length': Buffer.byteLength(payload)
            }
        };
        let req = https.request(authOptions, res => {...})

, затем выполняюэто, чтобы получить элементы в моем списке:

let listOptions = {
        hostname: 'XXXXX.sharepoint.com',
        path: '/sites/XXX/_api/lists/getbytitle('MyList')/items',
        method: 'GET',
        headers: {
            'Content-Type': 'application/json',
            'Authorization': `bearer ${accessToken}`,
            'Accept': 'application/json'
        }
    };
    let req = https.request(listOptions, res => {
        res.setEncoding('utf8');
        let stringResult = '';
        res.on('data', chunk => {
            stringResult += chunk.toString();
        });

Sharepoint всегда возвращает эту ошибку

"{"error":{"code":"-2147024891, System.UnauthorizedAccessException","message":{"lang":"en-US","value":"Access denied. You do not have permission to perform this action or access this resource."}}}"

1 Ответ

0 голосов
/ 25 октября 2018

Я наконец нашел, почему это не работает.Мне нужно было добавить AllowAppOnlyPolicy:

<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl" />

...