我想使用Microsoft graph API生成在线事件。
我有Office 365订阅
我已在Azure AD中使用帐户类型“ 任何组织目录(任何Azure AD目录-Multitenant)中的帐户和个人Microsoft帐户(例如Skype,Xbox)“
配置时未提供任何重定向URL
我已经为Calendars.ReadWrite的应用授予了委派权限和应用程序权限,并征得了管理员的同意。
Maven依赖项
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>msal4j</artifactId>
<version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.8.0-beta4</version>
</dependency>
<dependency>
<groupId>com.microsoft.graph</groupId>
<artifactId>microsoft-graph</artifactId>
<version>1.7.1</version>
</dependency>
<dependency>
<groupId>com.microsoft.graph</groupId>
<artifactId>microsoft-graph-core</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>com.microsoft.graph</groupId>
<artifactId>microsoft-graph-auth</artifactId>
<version>0.2.0-SNAPSHOT</version>
</dependency>
我正在使用ClientCredentialProvider创建身份验证提供程序。但是,每当我尝试创建事件时,都会收到“ OrganizationFromTenantGuidNotFound”
ClientCredentialProvider authProvider = new ClientCredentialProvider(
CLIENT_ID,
Arrays.asList("https://graph.microsoft.com/.default"),
CLIENT_SECRET,
"938db5c8-e2ce-3c76-bad7-1e00cf87b779",
NationalCloud.Global
);
请在此处找到堆栈跟踪
请帮助!
答案 0 :(得分:0)
更新:我离线调查了Varun。在他的情况下,问题在于他试图在来宾用户的日历中创建一个事件。这是一个hotmail.com用户,已作为访客添加到他的M365租户中。由于用户的邮箱(因此,她的日历)在M365租户之外,因此无法使用。
从堆栈跟踪中,您正在将POST发送到https://graph.microsoft.com/v1.0/me/events
。这需要用户上下文,因为您正在使用/me
段。但是,从上面的代码中,您将获得仅应用程序令牌,这意味着您已通过应用程序身份验证,而不是作为任何用户身份验证。尝试使用/me
访问任何URL都会失败。
相反,您需要获取用户的ID,然后发布到https://graph.microsoft.com/v1.0/users/{user-id}/events
。