Как настроить SharePoint, чтобы я перестал получать «Токен неподдерживаемого приложения»? - PullRequest
0 голосов
/ 22 мая 2019

Я создаю интеграцию, которая синхронизирует данные между веб-приложением и SharePoint. Проблема, с которой я столкнулся, заключается в том, что когда я пытаюсь использовать токен, который я получаю, чтобы сделать запрос, я получаю ответ 401 с текстом «Unsupported app only token».

Я использую Почтальон для проверки своих запросов. Приложение имеет большинство разрешений, и для API было предоставлено согласие администратора. Я пробовал с секретом клиента и с сертификатом.

Я искал везде, о чем мог думать. Официальная документация Microsoft для SharePoint; Документация Microsoft Graph (мне может понадобиться создать дочерние сайты, и в документации сказано, что она не поддерживается, так что это тупик); случайные места в Интернете, от StackOverflow, до различных блогов Microsoft; и даже сделал сообщение на techcommunity.microsoft.com (без ответа в течение недели, хотя я признаю, что это было плохо оформлено). Я пытался расшифровать код C #, который используют многие из этих мест, но с тех пор, как я его использовал, прошло почти 10 лет, и тогда мои знания были базовыми.

Я могу получить токен, используя следующий процесс:

- Method: POST
- URL: https://login.microsoftonline.com/-GUID-/oauth2/v2.0/token
- Headers: Content-Type: application/x-www-form-urlencoded
- Body contents:
    - client_id=The Client ID.
    - scope=https://-Site-.sharepoint.com/.default
    - client_secret=is a secret.
    - grant_type=client_credentials

Я также пытался загрузить сертификат и использовать его в качестве секрета, как некоторые из моих исследований сказали, что я должен попробовать, и я получаю следующее:

- HTTP Code: 401
- Error: Invalid client secret is provided.

Запрос, который я делаю, чтобы получить «токен неподдерживаемого приложения». ответ выглядит следующим образом:

- Method: GET
- URL: https://-Site-.sharepoint.com/_api/lists/getbytitle('List1')
- Headers:
    - Authorization: Bearer -Big String-
    - Accept: application/json;odata=verbose

Ответ, который я ожидаю, является либо ответом JSON, либо ответом об ошибке, в котором указано, что конечная точка URL-адреса неверна.

Буду признателен за любую помощь в этом вопросе. Спасибо за ваше время и усилия с этим.

Редактировать : Я перешел к попытке использовать сертификаты. Я нашел некоторую информацию на следующем веб-сайте, но это на C #, поэтому я не совсем понимаю, что все происходит. https://github.com/frankchen76/MediumSample/blob/master/AppOnlySPOSample/AppOnlySPOSample/Program.cs

Я думаю, мне нужно знать следующее:

string certFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, setting.CertficatePath);
X509Certificate2 certificate = new X509Certificate2(certFile, setting.CertificatePassword, X509KeyStorageFlags.MachineKeySet);
AuthenticationContext authenticationContext = new AuthenticationContext(setting.Authority, false);

ClientAssertionCertificate cac = new ClientAssertionCertificate(setting.ClientId, certificate);

//get the access token to Outlook using the ClientAssertionCertificate
var authenticationResult = await authenticationContext.AcquireTokenAsync(setting.ResourceId, cac);
string token = authenticationResult.AccessToken;

Конкретный контент, который мне нужен, - это URL-адрес (это должен быть стандартный URL-адрес аутентификации, если я не ошибаюсь), заголовки и основной текст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...