Java Azure开发 使用已有token字符串创建GraphServiceClient

一、背景说明

在已有的项目中,已经获取到了Graph的AccessToken并保存在内存里面。所以不希望再通过client secret或者certificate去创建GraphServiceClient对象。希望使用现有的token字符串来创建初始化创建GraphServiceClient从而来实现Graph其他API功能。

二、具体实现

2.1 需要Java Graph SDK依赖 加入到pom.xml文件内

 
  
	
      com.microsoft.graph
      microsoft-graph
      [5.0,)
  
  
  
      com.azure
      azure-identity
      [1.3,)
  

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 = "[email protected]";
            String to = "[email protected]";
			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();
		}
	}

你可能感兴趣的:(Azure,Microsoft,Graph,Java,azure,java,GraphService)