Использование учетных данных клиента с Microsoft Graph OneNote API в Office 365 бизнес

Я создаю приложение (вызовы HTTPS из LabVIEW), которое будет обновлять мои корпоративные записные книжки OneNote в Office 365 без необходимости какого-либо взаимодействия с пользователем. Следовательно, я выбрал использование потока учетных данных клиента и предоставление разрешений приложения в Azure AD моему приложению (чтение и запись всех записных книжек OneNote) через Microsoft Graph. Я сослался на инструкции, упомянутые на следующих страницах:

https://msdn.microsoft.com/en-us/office/office365/howto/onenote-auth-appperms

https://developer.microsoft.com/en-us/graph/docs/concepts/permissions_reference

https://docs.microsoft.com/en-gb/azure/active-directory/develop/active-directory-v2-protocols-oauth-client-creds

https://developer.microsoft.com/en-us/graph/docs/concepts/auth_v2_service

https://developer.microsoft.com/en-us/graph/docs/concepts/onenote-create-page

Я могу получить токен доступа из Microsoft Graph, но как только я попытаюсь использовать его для обновления своих записных книжек, сделав POST-вызов по URL-адресу https://graph.microsoft.com/v1.0/me/onenote/pages Я получаю сообщение об ошибке:« Не удается получить OneDriveForBusiness для этой учетной записи пользователя. . " Код - 30108

Однако я полностью могу получить доступ к OneDriveForBusiness в Интернете, используя ту же учетную запись, в которой было создано приложение, и идентификатор клиента, который я использовал для предоставления разрешений. Может кто-нибудь пояснить, существуют ли определенные ограничения относительно типов подписок O365 и OneDriveForBusiness, которые необходимы для моих требований? Какая конкретная подписка или их комбинации должны позволить мне достичь нужного мне потока?


person Anurag Saha Roy    schedule 26.05.2018    source источник


Ответы (1)


Вы не можете использовать /me с учетными данными клиента. /me - это псевдоним для /users/{currentUserId, но, поскольку вы используете учетные данные клиента, в контексте API есть Пользователь, которому нужно сопоставить этот псевдоним. В этом случае вы фактически звоните /v1.0/users/NULL/onenote/pages.

Вам необходимо явно указать пользователя, к которому вы хотите получить доступ:

/v1.0/users/{userId or userPrincipalName}/onenote/pages
person Marc LaFleur    schedule 27.05.2018