1

我在使用 microsoft graph api 时遇到问题。我从不使用它。我尝试编写负责从邮件中下载附件的应用程序。

该程序将从平台安排,因此无法获得管理员同意(因此授权使用客户端凭据)。我发现的每个代码示例都需要用户交互才能登录 microsoft 以获得令牌。

我从我公司的管理员那里收到以下项目:clientID、tenantID、应用程序名称、邮箱地址和权限 EWS.AccessAsUser.All(我应该请求 Mail.Read 权限吗?邮箱可以轻松迁移到 0365。如果我很了解 EWS 是换货)

我想连接到邮箱并下载附件。有什么方法可以使用 clientID、tenantID 接收身份验证?任何提供者存在吗?无需用户交互即可获得令牌?

4

2 回答 2

2

您可以使用 Microsoft Graph Java SDK 获取仅限应用的令牌。

ClientCredentialProvider authProvider = new ClientCredentialProvider(
            this.clientId,
            this.scopes,
            this.clientSecret,
            this.tenantId,
            this.endpoint);
IGraphServiceClient graphClient = GraphServiceClient
            .builder()
            .authenticationProvider(authProvider)
            .buildClient();

您可以在java spring webhook 示例中找到完整示例。但是,由于此处描述的身份验证 SDK,有一个小警告。

您需要请求的权限属于应用程序注册门户中Mail.Read的类型。添加该权限后,不要忘记单击权限列表顶部的按钮(如果您没有 UI 流,这是授予权限的方式)。Application PermissionMicrosoft GraphGrant admin consent for XXX

最后,EWS 是一个独立于 Microsoft Graph 的 API,在您的情况下,您不需要任何权限。

于 2020-05-15T12:57:32.330 回答
0

您可以使用以下来自 Microsoft 的使用 Java SDK 的代码参考获取访问令牌。

https://github.com/Azure-Samples/ms-identity-java-daemon/blob/master/msal-client-credential-secret/src/main/java/ClientCredentialGrant.java

于 2022-02-17T11:14:08.673 回答