首页 > 解决方案 > ms Graph api(beta) 访问被拒绝

问题描述

我正在尝试几种将 Microsoft Graph api(测试版)与 JAVA 结合使用的方法。(我参考这个链接来连接api“ https://docs.microsoft.com/en-us/graph/tutorials/java ”)我可以使用v1.0的所有功能,但我不能使用测试版.

例如,当我请求下面的代码时,他们成功返回 JsonObject。

JsonObject response = graphClient
        .customRequest("/me/calendar")
        .buildRequest()
        .get();

但是当我请求下面的代码时,

JsonObject response = graphClient
        .customRequest("/me/findRoomLists")
        .buildRequest()
        .get();

他们返回以下错误

There was an unexpected error (type=Internal Server Error, status=500).
Error code: ErrorAccessDenied Error message: Access is denied. Check credentials and try again. GET https://graph.microsoft.com/beta//me/findRoomLists SdkVersion : graph-java/v1.5.0 Authorization : Bearer

我不知道是哪个问题...

我使用下面的代码来使用测试版。

    // Build a Graph client
    graphClient = GraphServiceClient.builder()
        .authenticationProvider(authProvider)
        .logger(logger)
        .buildClient();

    //version change 1.0 -> beta
    graphClient.setServiceRoot("https://graph.microsoft.com/beta/");

这是我在 Azure 中的 API 权限。

1. Calendars.ReadWrite
2. Mail.ReadWrite
3. User.ReadBasic.All
4. User.ReadWrite

应用范围

app.scopes=User.ReadWrite,Calendars.ReadWrite,Mail.ReadWrite

我应该修改什么才能使用测试版?如果这是一个重复的问题,我很抱歉。

标签: javaazureazure-active-directorymicrosoft-graph-api

解决方案


Microsoft Graph Java SDK仅包含模型和请求构建器,用于使用 fluent API 访问端点v1.0。(如果特定 API 存在,则会有一个Java SDK 示例,否则不存在)

即使您使用graphClient.setServiceRoot("https://graph.microsoft.com/beta/"),它仍然会使用/v1.0类对所有内容进行序列化/反序列化。

如果您想使用 中不存在的资源/属性v1.0,则需要使用 beta 清单自己生成 SDK 代码。

有关更多详细信息,请查看此链接,在 Microsoft Graph 产品团队工作的人 @Marc LaFleur 提到了它。


推荐阅读