我尝试通过 Postman 在我的环境中重现相同的结果,并得到以下结果:
在我的 Azure AD 应用程序中,我授予API permissions
像下面这样:
我使用获取了访问令牌客户凭证参数如下:
POST https://login.microsoftonline.com/<TenantID>/oauth2/v2.0/token
client_id:my_appID
grant_type:client_credentials
scope:https://graph.microsoft.com/.default
client_secret:my_client_secret
回复:
当我尝试使用上述令牌创建笔记本时,我得到了同样的错误如下:
POST https://graph.microsoft.com/v1.0/me/onenote/notebooks
Content-type: application/json
{
"displayName": "My Test notebook"
}
回复:
Please note客户端凭证流不需要登录用户(无用户交互)并代表应用程序中的所有用户生成令牌。
当你使用/me
在请求中,它无法确定特定用户在所有用户中。所以,我们不能使用/me
具有客户端凭据流的端点。
To resolve错误,您需要使用委托身份验证流程,例如授权代码流程、ROPC 流程等...需要用户登录。
由于您无法在您的场景中使用委托身份验证流程,因此您可以通过替换来尝试以下查询/me
with /users/userID
:
POST https://graph.microsoft.com/v1.0/users/<User_ObjectID>/onenote/notebooks
Content-type: application/json
{
"displayName": "My Test notebook"
}
使用上面的查询,我成功创建了新笔记本。