当前位置: 首页 > 知识库问答 >
问题:

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

宗建章
2023-03-14

我一直在使用curl和Outlook REST API v1.0(具有基本身份验证)在Outlook日历中创建日历事件。基本身份验证即将被弃用,因此我现在正在尝试迁移到带有OAuth 2的Microsoft Graph v1.0。我已经走了一段路,但在运行 POST 以创建事件时卡在“错误访问被拒绝”上。这是我到目前为止所做的:

> < li>

在此注册我的应用程序(curl):https://apps.dev.microsoft.com/#/appList,设置日历的应用程序权限。读写(此外,还将权限委托给了日历。读写也一样。)

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

curl-X POST-k-d“grant_type=client_credentials

卷曲exe-k-o“C:\Temp\output.txt”-X POST-H“内容类型:应用程序/json”-H“授权:承载[TOKEN]”-d@“C:\Temp\eventDetails.json”https://graph.microsoft.com/v1.0/users/[UserPrincipalName]/calendas/[CalendarID]/events$select=Id,lastModifiedDateTime

{ “error”: { “code”: “ErrorAccessDenied”, “message”: “Access is dedened.请检查凭据,然后重试。 , “innerError”: { “request-id”: “38b802b9-08b9-4e0b-8f91-66ef56c459f8”, “date”: “2018-10-17T01:08:22” } } }

除了将注册应用程序的应用程序权限设置为日历。读写(上面的第1步)我不知道如何允许访问。任何帮助都将不胜感激。

非常感谢。

共有1个答案

吕天逸
2023-03-14

对我帮助很大的是用JWT检查网站检查令牌,比如JWT.ms.这个网站会向你解释关于令牌的所有细节(它是由微软构建的,令牌只被javascript解析,不会传输)。这个网站还有一个声明标签,在那里他们解释了令牌中的所有声明。

你说的是应用程序权限,这需要额外的步骤。它还必须得到Azure AD管理员对您要访问的目录的同意。

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

  1. 转到https://portal.azure.com -

这样做的作用是使用你请求的权限在租户中创建应用程序帐户。

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

 类似资料:
  • 我从快速入门开始(https://developers.google.com/google-apps/calendar/quickstart/python)而且效果很好。然后我尝试用这个指南插入事件(https://developers.google.com/google-apps/calendar/create-events)。我将此代码添加到quickstart的代码中,但出现错误。如何查看我

  • 问题内容: 当我以编程方式创建一个始终记为生日日历(类型)的日历事件时,我遇到了一个奇怪的问题,我不知道为什么会这样记录日历事件。 我使用的代码如下:Xamarin C# 请问有人有什么提示或想法可以指引我正确的方向吗? 提前致谢。 问题答案: 下面回答的问题是旧的,请参考Pkosta的答案,它提供了更准确的答案… 您必须将CalendarId值设置为3,而不是默认的生日日历1。例如 更改为 它为

  • 我尝试使用php在google calnder中创建事件。但谷歌并没有反映出这一点。 我遵循此代码 http://docs.dhtmlx.com/scheduler/how_to_start.html 在data.php文件中有这个代码 我有api控制台帐户,在该帐户中只有客户端ID和客户端机密。 我不知道如何得到这2个值"878294925469@developer.gserviceaccoun

  • 我正在开发一个用PHP和javascript编写的web应用程序。在这个应用程序中,我们将一些事件存储在自己的数据库中。 现在,我们要做的是,每当我们在应用程序中创建一个新事件时,它都应该在当前登录用户的谷歌日历的谷歌日历上创建一个重复的事件。 我们可以要求我们的用户从他们的谷歌控制台生成一个API密钥。 有没有办法创建一个谷歌日历事件通过使用一个API密钥,而没有任何其他配置。 谢谢

  • 我需要在日历上创建谷歌日历活动,并将其他用户添加为该活动的参与者。其目的是向应用程序用户发送日历事件,而无需征得他们的同意(O-Auth)。 在阅读了谷歌的留档后,我发现我需要一个服务号。所以我从我们的G-Suite的一个电子邮件地址创建了一个项目和一个服务号,noreply@xxxxx.com并为其启用了日历应用编程接口。 我创建并下载了一个密钥对(JSON),其内容是, 根据文档,我开始编写身

  • 我有两个google workspace帐户用于测试。帐户A有一个服务帐户,在帐户B中,我添加了用于域范围委派的服务帐户,该帐户具有读取/写入帐户B中日历所需的权限。 阅读活动和日历很有效。但是,当尝试使用帐户B中的资源日历中的服务帐户创建事件时,我遇到以下错误: 添加的权限: 如果我们在一个Google工作空间帐户中进行测试,它就可以工作。 这是密码