Java 使用Spring Boot的Microsoft Graph api邮件服务
我在Spring Boot应用程序中使用Microsoft Graph api收发邮件 我使用了graph api的依赖项,比如Java 使用Spring Boot的Microsoft Graph api邮件服务,java,spring-boot,microsoft-graph-api,Java,Spring Boot,Microsoft Graph Api,我在Spring Boot应用程序中使用Microsoft Graph api收发邮件 我使用了graph api的依赖项,比如 <dependency> <groupId>com.microsoft.graph</groupId> <artifactId>microsoft-graph</artifactId> <version>
<dependency>
<groupId>com.microsoft.graph</groupId>
<artifactId>microsoft-graph</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<!-- This dependency is only needed if you are using the TokenCrendentialAuthProvider -->
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.2.5</version>
</dependency>
在处输入代码时出错
ClientSecretCredential clientSecretCredential = new ClientSecretCredentialBuilder()
.clientId(CLIENT_ID)
.clientSecret(CLIENT_SECRET).tenantId(TENANT_GUID).build();
TokenCredentialAuthProvider tokenCredentialAuthProvider = new TokenCredentialAuthProvider(SCOPES, clientSecretCredential);
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( tokenCredentialAuthProvider ).buildClient();
MessageCollectionPage messagesPage = graphClient.me().messages()
.buildRequest()
.select("Sender,Subject")
.top(10)
.get();
我在代码中遇到了这样的错误
(DirectJDKLog.java:175) - Servlet.service() for servlet [dispatcherServlet] in context with path [/ldesk] threw exception [Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class com.azure.identity.implementation.IdentityClient] with root cause
java.lang.NoClassDefFoundError: Could not initialize class com.azure.identity.implementation.IdentityClient
at com.azure.identity.implementation.IdentityClientBuilder.build(IdentityClientBuilder.java:113) ~[azure-identity-1.2.5.jar:?]
at com.azure.identity.ClientSecretCredential.<init>(ClientSecretCredential.java:50) ~[azure-identity-1.2.5.jar:?]
at com.azure.identity.ClientSecretCredentialBuilder.build(ClientSecretCredentialBuilder.java:62) ~[azure-identity-1.2.5.jar:?]
(DirectJDKLog.java:175)-Servlet[dispatcherServlet]的Servlet.service()在路径为[/ldesk]的上下文中引发异常[Handler dispatch failed;嵌套异常为java.lang.NoClassDefFoundError:无法初始化类com.azure.identity.implementation.IdentityClient],根本原因是
java.lang.NoClassDefFoundError:无法初始化类com.azure.identity.implementation.IdentityClient
在com.azure.identity.implementation.IdentityClientBuilder.build(IdentityClientBuilder.java:113)~[azure-identity-1.2.5.jar:?]
在com.azure.identity.ClientSecretCredential.(ClientSecretCredential.java:50)~[azure-identity-1.2.5.jar:?]
在com.azure.identity.ClientSecretCredentialBuilder.build(ClientSecretCredentialBuilder.java:62)~[azure-identity-1.2.5.jar:?]
如果使用microsoft graph 3.4.0,则不能使用microsoft graph auth创建IAAuthenticationProvider对象
:
:
首先,在Pom.xml中添加azureidentity
ClientSecretCredential clientSecretCredential = new ClientSecretCredentialBuilder()
.clientId(clientId)
.clientSecret(clientSecret)
.tenantId(tenant)
.build();
TokenCredentialAuthProvider tokenCredentialAuthProvider = new TokenCredentialAuthProvider(scopes, clientSecretCredential);
GraphServiceClient graphClient =
GraphServiceClient
.builder()
.authenticationProvider(tokenCredentialAuthProvider)
.buildClient();
User me = graphClient.users(user_id).buildRequest().get();
如果我的回答有帮助,请接受我的回答,谢谢。IGraphServiceClient在microsoft graph版本3.4中不起作用。microsoft-graph-auth不支持新版本。请看我的更新。嗨,Pamela Peng,你能给我分享Git中最新版本的工作示例吗。我已经分享了获取graphClient的代码,doc。也许您可以参考本教程:。
ClientCredentialProvider authProvider = new ClientCredentialProvider(CLIENT_ID, SCOPES, CLIENT_SECRET, TENANT_GUID, NATIONAL_CLOUD);
IGraphServiceClient graphClient = GraphServiceClient
.builder()
.authenticationProvider(authProvider)
.buildClient();
User user = graphClient.users(user_id).buildRequest().get();
ClientSecretCredential clientSecretCredential = new ClientSecretCredentialBuilder()
.clientId(clientId)
.clientSecret(clientSecret)
.tenantId(tenant)
.build();
TokenCredentialAuthProvider tokenCredentialAuthProvider = new TokenCredentialAuthProvider(scopes, clientSecretCredential);
GraphServiceClient graphClient =
GraphServiceClient
.builder()
.authenticationProvider(tokenCredentialAuthProvider)
.buildClient();
User me = graphClient.users(user_id).buildRequest().get();