我正在构建一个应用程序(来自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://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获取访问令牌,但是一旦我尝试通过对URL进行POST调用来更新我的笔记本 https://graph.microsoft.com/v1.0/me/onenote/pages 我收到错误: "无法检索此用户帐户的OneDriveForBusiness。"代码 - 30108
但是,我完全能够使用创建应用程序的同一帐户以及我用于授予权限的租户ID在线访问OneDriveForBusiness。有人可以澄清是否对我的要求所需的O365和OneDriveForBusiness订阅类型有某些限制?哪个特定的订阅或它们的组合应该允许我实现我需要的流程?
答案 0 :(得分:1)
您无法将/me
与客户端凭据一起使用。 /me
是/users/{currentUserId
的别名,但由于您正在使用客户端凭据,因此API中的用户可以将该别名映射到。在这种情况下,您实际上是在调用/v1.0/users/NULL/onenote/pages
。
您需要明确指定要访问的用户:
/v1.0/users/{userId or userPrincipalName}/onenote/pages