使用 Microsoft Graph 创建日历事件:ErrorAccessDenied

2024-02-02

我一直在使用curl 和Outlook REST API v1.0(带有基本身份验证)在Outlook 日历中创建日历事件。基本身份验证很快就会被弃用,因此我现在尝试使用 OAuth 2 迁移到 Microsoft Graph v1.0。我已经取得了一些进展,但在运行 POST 创建事件时陷入“ErrorAccessDenied”。这是我到目前为止所做的:

  1. 在这里注册我的应用程序(curl):https://apps.dev.microsoft.com/#/appList https://apps.dev.microsoft.com/#/appList,将应用程序权限设置为 Calendars.ReadWrite(并且,为了更好地衡量,还将委派权限设置为 Calendars.ReadWrite。)

  2. 使用上面步骤 1 中的客户端/应用程序 ID 和客户端密钥/密码,我可以使用以下命令获取访问令牌:

curl -X POST -k -d "grant_type=client_credentials&client_id=[ApplicationID]&client_secret=[密码]&resource=https%3A%2F%2Fgraph.microsoft.com%2F"https://login.microsoftonline.com/[TenantID]/oauth2/token https://login.microsoftonline.com/%5BTenantID%5D/oauth2/token

  1. 然后,我尝试使用以下命令创建事件,但收到以下 ErrorAccessDenied 错误:

curl.exe -k -o "C:\Temp\output.txt" -X POST -H "Content-Type:application/json" -H "授权: 持有者 [TOKEN]" -d @"C:\Temp\事件详细信息.json”https://graph.microsoft.com/v1.0/users/[UserPrincipalName]/calendars/[CalendarID]/events https://graph.microsoft.com/v1.0/users/%5BUserPrincipalName%5D/calendars/%5BCalendarID%5D/events?$select=Id,lastModifiedDateTime

{ “错误”: { “代码”:“错误访问被拒绝”, "message": "访问被拒绝。请检查凭据并重试。", “内部错误”:{ “请求ID”:“38b802b9-08b9-4e0b-8f91-66ef56c459f8”, “日期”:“2018-10-17T01:08:22” } } }

除了将注册应用程序的应用程序权限设置为 Calendars.ReadWrite(上面的步骤 1)之外,我不知道如何允许访问。任何帮助将不胜感激。

谢谢。


对我帮助很大的是使用 JWT 检查网站检查令牌,例如JWT.ms https://jwt.ms。该网站将向您解释有关令牌的所有详细信息(它是由 Microsoft 构建的,令牌仅由 javascript 解析,不会传输)。这个网站还有一个Claims选项卡,其中解释了令牌中的所有声明。

您正在谈论应用程序权限,这需要额外的步骤。它还必须获得要访问的目录的 Azure AD 管理员的同意。

您可以将其构建到登录流程中,但最简单的方法是通过 Azure 门户。

  1. Go to https://portal.azure.com https://portal.azure.com-> Azure 活动目录 ->[广告名称] - 应用程序注册
  2. 找到您想要授予访问权限的应用程序。
  3. Click Settings
  4. Click 所需权限
  5. Click 授予权限

其作用是在您的租户中创建一个应用程序帐户,并具有您请求的权限。

完成这些步骤后,您应该创建一个新令牌并将其与第一次获得的令牌进行比较,您应该能够看到更改。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Microsoft Graph 创建日历事件:ErrorAccessDenied 的相关文章

随机推荐