在 Office 365 商业版上将客户端凭据与 Microsoft Graph OneNote API 结合使用

Using Client Credentials with Microsoft Graph OneNote API on Office 365 Business

我正在构建一个应用程序(来自 LabVIEW 的 HTTPS 调用),它将在 Office 365 上更新我的企业 OneNote 笔记本,而无需任何用户交互。因此,我选择使用客户端凭据流并通过 Microsoft Graph 将 Azure AD 中的应用程序权限授予我的应用程序(读取和写入所有 OneNote 笔记本)。 我已参考以下页面中提到的说明:

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 我收到错误: "The OneDriveForBusiness for this user account cannot be retrieved." 代码 - 30108

但是,我完全能够使用创建应用程序的同一帐户和我用来授予权限的租户 ID 在线访问 OneDriveForBusiness。有人可以澄清一下我的要求所必需的 O365 和 OneDriveForBusiness 订阅的类型是否有某些限制吗?哪个特定订阅或其组合应该允许我实现我需要的流程?

您不能将 /me 与客户端凭据一起使用。 /me/users/{currentUserId 的别名,但由于您使用的是客户端凭据,因此 API 的上下文中有一个用户可以将该别名映射到。在这种情况下,您实际上是在调用 /v1.0/users/NULL/onenote/pages

您需要明确指定要访问的用户:

/v1.0/users/{userId or userPrincipalName}/onenote/pages