在已有的项目中,已经获取到了Graph的AccessToken并保存在内存里面。所以不希望再通过client secret或者certificate去创建GraphServiceClient对象。希望使用现有的token字符串来创建初始化创建GraphServiceClient从而来实现Graph其他API功能。
2.1 需要Java Graph SDK依赖 加入到pom.xml文件内
-
-
- <dependency>
- <groupId>com.microsoft.graphgroupId>
- <artifactId>microsoft-graphartifactId>
- <version>[5.0,)version>
- dependency>
-
- <dependency>
- <groupId>com.azuregroupId>
- <artifactId>azure-identityartifactId>
- <version>[1.3,)version>
- dependency>
2.2 代码片段
- public static GraphServiceClient initGraphServiceClient() {
-
- IAuthenticationProvider authProvider = new IAuthenticationProvider() {
-
- @Override
- public CompletableFuture
getAuthorizationTokenAsync(URL requestUrl) { - CompletableFuture
future = new CompletableFuture<>(); - future.complete(Your_AccessToken);
- return future;
- }
- };
-
- return GraphServiceClient.builder().authenticationProvider(authProvider).buildClient();
-
- }
下面代码是实现调用创建GraphServiceClient,调用graph api发送带附件的邮件。
- public static String sendMail() {
-
- try {
- String mfrom = "xxxx@outlook.com";
- String to = "xxxx@outlook.com";
- GraphServiceClient
graphClient = initGraphServiceClient(); -
- Message message = new Message();
- message.subject = "Meet for lunch?";
- ItemBody body = new ItemBody();
- body.contentType = BodyType.TEXT;
- body.content = "The new cafeteria is open.";
- message.body = body;
- LinkedList
toRecipientsList = new LinkedList(); - Recipient toRecipients = new Recipient();
- EmailAddress emailAddress = new EmailAddress();
- emailAddress.address = to;
- toRecipients.emailAddress = emailAddress;
- toRecipientsList.add(toRecipients);
- message.toRecipients = toRecipientsList;
- // 构建附件
- LinkedList
attachmentsList = new LinkedList(); - FileAttachment attachments = new FileAttachment();
- attachments.name = "hello word.txt";
- attachments.oDataType = "#microsoft.graph.fileAttachment";
- attachments.contentType = "text/plain";
- attachments.contentBytes = Base64.getDecoder().decode("SGVsbG8gV29ybGQh");
- attachmentsList.add(attachments);
- AttachmentCollectionResponse attachmentCollectionResponse = new AttachmentCollectionResponse();
- attachmentCollectionResponse.value = attachmentsList;
-
- AttachmentCollectionPage attachmentCollectionPage = new AttachmentCollectionPage(
- attachmentCollectionResponse, null);
- message.attachments = attachmentCollectionPage;
- // 以指定用户邮箱发送邮件
- graphClient.users(mfrom).sendMail(
- UserSendMailParameterSet.newBuilder().withMessage(message).withSaveToSentItems(true).build())
- .buildRequest().post();
- log.info("send email success");
-
- return "success";
- } catch (Exception e) {
- e.printStackTrace();
- log.error("send email error : {}", e.getMessage());
- return e.getMessage();
- }
- }