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

无法使用仅Microsoft Graph应用程序验证来访问用户日历

斜博超
2023-03-14

我从https://github . com/microsoftgraph/NodeJS-apponlytoken-rest-sample下载了NodeJS代码,并授予了所需的所有权限(在所有邮箱中读写日历,在Microsoft Graph应用程序权限中读取目录数据应用程序权限)。

我可以成功获取添加到Azure AD的所有用户,但我无法获取他们的任何日历信息或创建事件(这是示例中的原始代码)。我进行的所有调用都返回以下错误:

'{\r\n "error": {\r\n "code": "UnknownError",\r\n "message": "",\r\n "innerError": {\r\n "request-id": "1fd8568b-b4a3-4168-a835-c389eb783890",\r\n "date": "2016-07-14T18:08:41"\r\n }\r\n }\r\n}' }

请务必注意,我的 Office 365 域与 Azure AD 帐户中的域不同,尽管我的 Office 365 管理员是 Azure AD 帐户的管理员。我不知道这是否是正常行为,我应该使用他们的 Microsoft 帐户(我也创建了)手动将我的 Office 365 用户添加到 Azure AD,或者这可能是此错误的原因。

我的目标是检查用户在特定时间段内是否空闲(他们的日历中没有会议),根据Microsoft Graph API,这似乎是可能的:无法使用calendarView调用列出会议室的重复事件。

我感谢任何帮助。谢谢。

共有1个答案

岳涵煦
2023-03-14

请务必注意,我的 Office 365 域与 Azure AD 帐户中的域不同,尽管我的 Office 365 管理员是 Azure AD 帐户的管理员。我不知道这是否是正常行为,我应该使用他们的 Microsoft 帐户(我也创建了)手动将我的 Office 365 用户添加到 Azure AD,或者这可能是此错误的原因。

当我们使用客户端凭据流对应用程序进行身份验证时,它会使用客户端Id和客户端密码。我们将Office 365帐户与Azure AD帐户相关联是正常的,这不会影响我们对应用程序进行身份验证。但你需要确保你在Office 365目录而不是Azure AD目录上注册了应用程序,以便目录上的用户拥有在线使用Exchange的许可证。

为了获得详细的错误消息,我们可以使用Fiddler来跟踪Http请求。为了使Fiddler能够捕获来自Node.js的Http请求,我们需要使用代理。您可以将代码添加到Graph.js:

var requestO = require('request');
var Q = require('q');

var request = requestO.defaults({ "proxy": "http://127.0.0.1:8888"});

您还可以使用以下代码在app.js中获取Access令牌:

// Get an access token for the app.
auth.getAccessToken().then(function (token) {
    var users = [{"id":"userId","displayName":"displayName"}];
    console.log(token);
    graph.createEvent(token, users)
    console.log("create event finished...")

}, function (error) {
    console.error('>>> Error getting access token: ' + error);
});

然后,您可以使用此令牌测试Microsoft G想像REST API以查找此问题的根本原因。

 类似资料:
  • 我正在研究React应用程序与KeyCloak的集成。我已经在本地计算机上安装了keycloak服务器版本11.0.2。我能够访问管理登录并创建管理用户。我还使用keycloak创建了一个具有凭据的自定义客户端和用户。我的react应用程序是在我的机器的端口9000上托管的,而keycloak是在8080(默认)端口上托管的。现在,当我重定向到我的应用程序URL时,它会自动重定向到下面的URL:

  • 我有一个管理用户谷歌日历的web应用程序。最近,我在检索日历列表时遇到了一个“无效凭据”错误,并发现该用户帐户是一个g套件帐户(因为不同的域)。但是,我仍然可以获得访问令牌和刷新令牌。我还可以从帐户中获取开放ID信息。但无法访问日历。其他帐户以gmail结尾。com工作正常。 我是否错过了这些g套件用户的身份验证?

  • 问题内容: 我正在尝试使用来限制用户执行某些操作。 : 如果在中找到用户,则应该将用户重定向到索引页面。 但是,我得到了一个,说是空的,如if-check所验证。 : 为什么是null以及如何解决? (这是我使用的参考。) 问题答案: Struts Session只是底层的包装。 虽然实现SessionAware接口是在Action中获取它的正确方法,但是如果要从Interceptor中获取它,则

  • 我试图从我的SAM应用程序本地连接到DynamoDB。我能够启动Dynamodb服务器,并能够通过我的python文件连接它,引用此https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.Python.01.html 导入json导入boto3从boto3.dynamodb.conditions

  • 我们编写了一个服务应用程序,该应用程序从组织(租户)中的多个日历中读取Office 365日历信息,并针对条目进行一些分析。我们为此使用Office 365 REST API。 我们有多个客户组织(租户)需要此功能,因此我遵循了@Matthias Leibmann文章中的步骤:使用Office 365邮件、日历和联系人API构建守护程序或服务应用程序(OAuth2客户端凭据流) 我们在开发期间使用