Microsoft Graph 获取可用于获取用户日历的访问令牌

microsoft graph get access token that can be use to get user's calender

我的主要目的是通过单个管理员访问令牌获取用户的日历。 我正在尝试按照以下步骤获取访问令牌。

URL :https://login.microsoftonline.com/{tenentId}/oauth2/v2.0/token 正文 client_id:client_ID 范围:https://graph.microsoft.com/.default client_secret:client_secretID grant_type:client_credentials

这给了我一个访问令牌,但是当我尝试使用此令牌从中获取用户数据时 url https://graph.microsoft.com/v1.0/users 我收到这个错误

{ “错误”: { “代码”:“Authorization_RequestDenied”, "message": "权限不足,无法完成操作。", “内部错误”:{ “日期”:“2021-04-20T11:13:13”, “请求 ID”:“66d3af76-xxxx-xxxx-xxxx-c39e7xxxxxx”, “客户端请求 ID”:“66d3af76-xxxx-xxxx-xxxx-c39exxxxxx” } } } }

我已经在我的 Azure 应用中启用了所有需要的权限

此处您使用的是应用程序上下文流,您将在其中获取应用程序令牌。此处需要在 Azure AD App 中指定 Application permissions 'User.Read.All' 才能工作。确保您已授予管理员同意此权限。然后您会在令牌中看到该权限,它允许您从 /users.

获取用户

如果您没有看到上面的授予管理员同意按钮,那么您不是全局管理员,因此您应该作为管理员授予此权限。