如何获取outllok日历列表?

问题描述 投票:0回答:1

我已经设置了一个天蓝色应用程序并授予了获取登录用户的日历列表所需的所有权限enter image description here

现在我正在从邮递员处调用日历列表 api,并提供所有必需的凭据,其范围如下

Calendars.ReadWrite Calendars.Read Calendars.Read.Shared Calendars.ReadBasic

我成功获取访问令牌

但是当我调用日历列表 api 时使用该令牌

https://graph.microsoft.com/v1.0/me/calendars

我收到以下错误

{"error":{"code":"AuthOMMissingRequiredPermissions","message":"The AadGuestPft token doesn't contain the permissions
required by the target API for calling app
'00000003-0000-0000-c000-000000000000'.","innerError":{"oAuthEventOperationId":"a244c7b2-8c6f-4c98-874c-5f8e1df48d02","oAuthEventcV":"tEIoCwoZzcePn4FTJroLdw.1.1.1","errorUrl":"https://aka.ms/autherrors#error-InvalidGrant","requestId":"71f80207-9747-4191-928c-7180601269f5","date":"2024-12-16T14:22:18"}}}
azure postman outlook-api
1个回答
0
投票

错误:“代码”:“AuthOMMissingRequiredPermissions”,“消息”:“AadGuestPft 令牌不包含权限 调用应用程序的目标 API 需要

此错误通常发生在用户以访客用户身份登录时,因为访客用户在资源租户内没有 Exchange 邮箱,因此您无法获取日历数据。

用户只能获取创建用户的根租户中的日历事件。

要解决该错误,需要使用authorization_code流程生成访问令牌,用于生成代码使用

/common/oauth2/v2.0/authorize
端点并用于生成访问令牌
/common/oauth2/v2.0/token

在资源租户中注册了多租户 Microsoft Entra ID 应用程序,添加了

Calendar.ReadWrite
委派类型 API 权限和授予管理员同意,如下所示:

enter image description here

使用

authorization_code
流程生成访问令牌。

为了获得

code
,我在浏览器中运行了授权请求

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
&client_id=<AppID>
&response_type=code
&redirect_uri=YOUR REDIRECT URI
&response_mode=query
&scope=https://graph.microsoft.com/.default
&state=12345

enter image description here

现在,使用以下参数生成访问令牌:

GET https://login.microsoftonline.com/common/oauth2/v2.0/token

client_id = <app_id>
client_secret = <client_secret>
grant_type=authorization_code
scope=https://graph.microsoft.com/.default
redirect_uri= https://jwt.ms
code=<code>

enter image description here

列出日历事件:

GET https://graph.microsoft.com/v1.0/me/calendars

enter image description here

参考:

CarlZhao-MSFT 的 Microsoft QnA 主题

© www.soinside.com 2019 - 2024. All rights reserved.