1

我目前正在尝试创建一个基本网站,以便在树莓派上本地运行,该网站向我显示当天的 Outlook 日历。但是,当我尝试访问https://graph.microsoft.com/v1.0/me/events端点时,我收到 401 未经授权的错误。

这是一个简单的 node.js express 服务器,用于与图形 api 交互的所有代码都来自Microsoft 提供的javascript quickstart 应用程序。快速入门应用程序运行良好,我可以看到作为https://graph.microsoft.com/v1.0/me演示一部分的端点的 json 响应,但更改端点会导致 401。

我已确保在 azure 应用注册页面中启用了Calendar.read权限,并且在我的应用中我已将calendar.read权限添加到我的范围。当我登录时,登录弹出窗口要求允许读取我的日历,这对我来说表明该应用程序应该可以访问我的日历。

我的应用程序配置(同样基于快速启动应用程序)如下所示:

const applicationConfig = {
    clientID: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
    authority: 'https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
    graphScopes: ['calendars.read', 'tasks.read'],
    graphEndpoint: 'https://graph.microsoft.com/v1.0/me/events',
};

除了这些更改之外,其余代码与示例代码相同。

4

1 回答 1

0

您还应该包括User.Read在您的范围内。从User.Read 的文档中

允许用户登录应用,并允许应用读取登录用户的个人资料。它还允许应用程序读取登录用户的基本公司信息。

const applicationConfig = {
    clientID: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
    authority: 'https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
    graphScopes: ['Users.Read', 'Calendars.Read', 'Tasks.Read'],
    graphEndpoint: 'https://graph.microsoft.com/v1.0/me/events',
};
于 2019-04-14T21:22:23.280 回答