Laden Sie den Anhangsinhalt mithilfe der Microsoft -Graph -API mit Java herunterJava

Java-Forum
Guest
 Laden Sie den Anhangsinhalt mithilfe der Microsoft -Graph -API mit Java herunter

Post by Guest »

Ich muss E -Mail mit MSAL- und Microsoft -Graph -API lesen. Sobald die E -Mail gelesen wurde, möchte ich überprüfen, ob der Anhang vorhanden ist oder nicht, wenn der Anhang vorhanden ist. Mit dem folgenden Code kann ich E -Mail -Nachrichtendetails und Anhangsdetails/Meta -Daten lesen, aber nicht welchen Code zum Herunterladen/den Anhang zu schreiben.

Code: Select all

package com.xxx.xxxxx.msaltest.client;

import static com.xxx.xxxxxx.msaltest.constants.Constants.AUTHORITY_COMMON_ENDPOINTS;
import static com.xxx.xxxxxx.msaltest.constants.Constants.CLIENT_ID;
import static com.xxx.xxxxxx.msaltest.constants.Constants.SCOPE;

import java.util.List;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.function.Consumer;

import org.apache.commons.lang.StringUtils;

//import com.microsoft.graph.requests.GraphServiceClient;
import com.microsoft.aad.msal4j.DeviceCode;
import com.microsoft.aad.msal4j.DeviceCodeFlowParameters;
import com.microsoft.aad.msal4j.IAccount;
import com.microsoft.aad.msal4j.IAuthenticationResult;
import com.microsoft.aad.msal4j.PublicClientApplication;
import com.microsoft.graph.authentication.IAuthenticationProvider;
import com.microsoft.graph.models.Attachment;
import com.microsoft.graph.models.Message;
import com.microsoft.graph.models.User;
import com.microsoft.graph.requests.AttachmentCollectionPage;
import com.microsoft.graph.requests.GraphServiceClient;
import com.microsoft.graph.requests.MessageCollectionPage;

import okhttp3.Request;

public class DeviceCodeClientMsal2 implements Runnable {

public static String COMMON_VARIABLE = StringUtils.EMPTY;

public DeviceCodeClientMsal2() {

}

@Override
public void run() {
IAuthenticationResult result;
try {
result = acquireTokenDeviceCode();
System.out.println("** Access token: " + result.accessToken());
System.out.println("** Id token: " + result.idToken());
System.out.println("** Account username: " + result.account().username());

IAuthenticationProvider provider = new
MyAuthenticationProvider(result.accessToken());

GraphServiceClient graphServiceClient = GraphServiceClient.builder()
.authenticationProvider(provider).buildClient();

User user = graphServiceClient.me().buildRequest().get();

final MessageCollectionPage messagePage =
graphServiceClient.me().messages().buildRequest().top(3).get();

List messageList = messagePage.getCurrentPage();
for (Message msg : messageList) {
System.out.println("Subject -> " + msg.subject);
System.out.println("Body -> " + msg.body.toString());
System.out.println("Is attachment exist ? " + msg.hasAttachments);
if (msg.hasAttachments) {
System.out.println("Message id -> " + msg.id);
AttachmentCollectionPage attachments =
graphServiceClient.me().messages(msg.id).attachments()
.buildRequest().get();
List listOfAttachment = attachments.getCurrentPage();
System.out.println("Size -> " + listOfAttachment.size());
Attachment attachment = listOfAttachment.get(0);
System.out.println("Attachment id -> " + attachment.id);
//How to download the attachment

}
}

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("run method exits");
}

private static IAuthenticationResult acquireTokenDeviceCode() throws Exception {

// Load token cache from file and initialize token cache aspect. The token cache
// will have
// dummy data, so the acquireTokenSilently call will fail.
System.out.println("Before Public Client Application");
PublicClientApplication pca = PublicClientApplication.builder(CLIENT_ID).authority(AUTHORITY_COMMON_ENDPOINTS)
.build();

// Take first account in the cache.  In a production application, you would
// filter
// accountsInCache to get the right account for the user authenticating.

IAuthenticationResult result;
Consumer deviceCodeConsumer = (DeviceCode deviceCode) -> {
COMMON_VARIABLE = deviceCode.message();
System.out.println(deviceCode.message());
};
DeviceCodeFlowParameters parameters = DeviceCodeFlowParameters.builder(SCOPE, deviceCodeConsumer).build();
result = pca.acquireToken(parameters).join();
return result;
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post