在Office 365 Business上使用客户端凭据与Microsoft Graph OneNote API

时间:2018-05-26 10:39:38

标签: microsoft-graph onenote-api

我正在构建一个应用程序(来自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获取访问令牌,但是一旦我尝试通过对URL进行POST调用来更新我的笔记本 https://graph.microsoft.com/v1.0/me/onenote/pages 我收到错误: "无法检索此用户帐户的OneDriveForBusiness。"代码 - 30108

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

1 个答案:

答案 0 :(得分:1)

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

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

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