Так борется с той же проблемой ранее сегодня: всегда получали 401 Несанкционированные или другие ошибки. Затем я натолкнулся на этот ответ: Building a multi-tenant app for SharePoint Online O365
Вот оно: это очень противоречиво, но ответ был тот, что после получения маркера для URL-адреса обнаружения и выполнения обнаружения службы вам нужно получить токен для каждого serviceResourceId, хотите позвонить. Здесь есть два чрезвычайно важных момента, которые почти 8 часов чтения документации не делают явным ясным.
КАЖДЫЙ СЕРВИС РЕСУРС ID ИМЕЕТ РАЗНЫЕ СИМВОЛ
Первый пункт очень запутанным: Я предполагаю, что его сделали так, потому что отдельные приложения арендатора работают на отдельных кластерах и Microsoft решила не иметь служба единого органа. Каждая другая реализация, выполняющая многопользовательскую работу (например, реализация Google Apps), дает вам один токен, который переносит ВСЕ ваши разрешения в один мяч.
ВЫ ЗВОНИТЕ лексема Службы поиска НЕСКОЛЬКО РАЗ С ТЕМ ЖЕ КОД
Это НЕВЕРОЯТНО нелогичным (я использую смелые колпачков на цели). В Интернете нет других сервисов OAuth2 (и я лично написал код для 30 реализаций OAuth2), где вы можете вызывать услугу поиска токенов несколько раз с тем же кодом и не получать ошибку. Это полностью противоречит всем ожиданиям по умолчанию, и это серьезный отказ в документации, который он не более четко прописал как отклонение от стандартной практики.
Я скажу это еще раз: нет, где еще во всем Интернете вы можете использовать один и тот же код OAuth2 более одного раза, чтобы получить токен доступа. Это то, что должно быть вызвано ПРОДВИЖНО по документации и просто нет.
Если вы по-прежнему иметь эту проблему, вы должны сделать это с кодом oauth2 вернулся:
- Получить маркер маркер доступа с использованием кода и добавления запроса параметр «ресурс» = «https://api.office.com/discovery/» (закрытие слэш важен)
- вызова URL-адрес https://api.office.com/discovery/v2.0/me/services ", используя заголовок авторизации установить на маркер, полученном на этапе # 1. Это будет возвращать объект JSON, с значения поля а. поле значения будет массивом услуги, для которых этот код будет возвращать токены доступа. Каждый объект в массиве значений будет иметь свойство serviceResourceId.
- Для каждого объекта вам нужно будет получить еще один токен доступа, используя тот же код, который вы использовали в шаге 1, но с ресурсом, установленным в serviceResourceId.
Код с шага 3 фактически предоставит вам доступ к конечной точке арендатора, которую вы хотите. 3.
Можете ли вы добавить дополнительную информацию о конкретных областях, которые вы добавляете? Для доступа к информации пользователя требуется User.Read (как минимум). Для доступа к файлам пользователя вам нужны файлы. Читайте. Прямо сейчас вы не сможете загружать большие файлы, эта возможность скоро появится. –
Я попытался добавить ВСЕ области, но это не сработает. – KardanovIR
Привет, Карданов. Можете ли вы рассказать мне, работает ли для вас следующая ссылка? https://graphexplorer2.azurewebsites.net/?UrlRequest=GET&text=https%3A%2F%2Fgraph.microsoft.com%2Fbeta%2Fme%2Ffiles –