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

在Office 365中访问其他用户日历时,图形API出现拒绝访问或未找到错误

凤柏
2023-03-14

我想从我在 Microsoft Office 365 上的管理员帐户访问组织的其他用户日历。在 Office 365 上,我可以搜索和访问这些日历。我想使用 Microsoft Graph API 访问这些(其他用户的)日历。下面是使用图形 API 访问 Office 365 日历的官方文档。1. 来自用户的日历 2.直接访问压光机

这是我的Auth Helper类,我在其中定义了我的权限范围

module AuthHelper

  CLIENT_ID = '91e6****-****-40f7-9b46-******d1149c'
  CLIENT_SECRET = 'pftjo*******55;hwSN2-(%'

  SCOPES = [ 'openid',
             'profile',
             'User.Read',
             'Mail.Read',
             'Calendars.Read',
             'Calendars.Read.Shared' ]

  def get_login_url
    client = OAuth2::Client.new(CLIENT_ID,
                                CLIENT_SECRET,
                                :site => 'https://login.microsoftonline.com',
                                :authorize_url => '/common/oauth2/v2.0/authorize',
                                :token_url => '/common/oauth2/v2.0/token')

    login_url = client.auth_code.authorize_url(:redirect_uri => authorize_url, :scope => SCOPES.join(' '))
  end

  def get_token_from_code(auth_code)
    client = OAuth2::Client.new(CLIENT_ID,
                                CLIENT_SECRET,
                                :site => 'https://login.microsoftonline.com',
                                :authorize_url => '/common/oauth2/v2.0/authorize',
                                :token_url => '/common/oauth2/v2.0/token')

    token = client.auth_code.get_token(auth_code,
                                   :redirect_uri => authorize_url,
                                   :scope => SCOPES.join(' '))
  end

尝试邮递员:

https://graph.microsoft.com/v1.0/users查询以及标题显示我所有的用户,但

GET /users/{id | userPrincipalName}/calendars 查询显示 404 未找到错误。

简而言之,我可以从我的office365应用程序的搜索栏访问其他用户的日历,但不能使用

这些方法中的任何一种。

共有1个答案

冯浩旷
2023-03-14

看起来,只有在用户上下文之外运行的应用程序(如服务/守护程序应用程序)才能访问组织中的每个日历。获取在没有登录用户的情况下运行的应用的访问令牌有点不同,您需要通过管理员同意流程才能让您的应用访问每个人的日历。我刚刚测试了这个和<code>日历。读取是您需要的唯一范围。

这些步骤是:

  1. 注册你的应用
  2. 添加日历。作为应用程序权限读取
  3. 通过转到 https://login.microsoftonline.com/{替换为租户}/adminconsent?nonce=graph 之类的 URL 向应用授予管理员同意

一旦我获得了访问令牌,访问另一个用户日历的其余调用正是您在问题中发布的内容:

< code >获取https://graph . Microsoft . com/v 1.0/users/[user-id]/日历

获得日历 ID 后,您可以在以下位置查看其日历事件:

< code >获取https://graph . Microsoft . com/v 1.0/users/[user-id]/calendars/[calendar-id]/events

我鼓励您在图形浏览器中查看我们的日历示例。

 类似资料:
  • 我使用委托权限来获得访问令牌授权。用户是全局管理员 权限范围是offline_访问用户。读写。所有文件。读写。所有 我请求API获取相同的租户子用户驱动器文件 https://graph.microsoft.com/v1.0/users/xxx/drive/root/children 返回访问拒绝 https://graph.microsoft.com/v1.0/me/drive/root/chi

  • 我想从我的Ruby应用程序中访问Calendar rest API。我已经创建了azure多租户应用程序,并对其进行了配置。 我尝试获取对资源“https://outlook.office365com/”的访问令牌,但出现错误 我找不到这个错误的任何描述,也不明白为什么它被禁用 以下是我的azure应用程序权限:

  • 我正在用angular和nodejs创建一个应用程序,我需要能够读取另一个用户的事件列表。现在,我正在尝试使用“https://graph . Microsoft . com/v 1.0/users/other username @ company URL . com/events”,这给了我403“访问被拒绝。请检查凭据,然后重试。。然而,如果我使用“https://graph . Micros

  • 通过点击此请求:https://outlook.office365.com/api/v1.0/users/room@email.com/events 浏览器中,我可以输入我的管理员用户名和密码并获取该特定房间的日历事件。但是,当我尝试从经过管理员身份验证的本机应用程序进行此调用时,我收到此响应:reason=“调用应访问 oauth 令牌中指定的邮箱。error_category=“invalid

  • 问题内容: 为了在具有许多参数的表单中发布AJAX表单,我使用一种解决方案:创建一个,通过POST将表单发布到其中,然后访问的内容。具体来说,我正在访问这样的内容: 我对其进行了测试,并且效果良好。 在某些页面上,我开始出现“访问被拒绝”错误。据我所知,如果iframe是从同一域提供的,则不应发生这种情况。 我很确定它以前可以正常工作。有人知道吗? 如果我不够清楚:我要发布到 同一域 。因此,这不

  • 我想访问日历RestAPI。我已经创建了azure多租户应用程序,并对其进行了配置。 我尝试获取对资源“https://outlook.office365.com/”的访问令牌,但出现错误 “AADSTS50001:资源'https://outlook.office365.com/'已禁用。 注意:我在azure帐户的“其他应用程序的权限”部分中找不到“Office 365 Exchange On