Code: Select all
package com.eclerx.email;
import java.util.Arrays;
import java.util.List;
import com.azure.identity.DeviceCodeCredential;
import com.azure.identity.DeviceCodeCredentialBuilder;
import com.microsoft.graph.authentication.TokenCredentialAuthProvider;
import com.microsoft.graph.models.Message;
import com.microsoft.graph.models.User;
import com.microsoft.graph.requests.GraphServiceClient;
import com.microsoft.graph.requests.MessageCollectionPage;
import okhttp3.Request;
public class DeviceCodeCredentialsTest {
private String deviceCode;
private static final List graphApiScopes =
Arrays.asList("https://graph.microsoft.com/.default");
public DeviceCodeCredentialsTest() {
}
public static AccessProvider initializeGraphForUserAuth() {
final DeviceCodeCredential deviceCodeCred = new
DeviceCodeCredentialBuilder().clientId(Constants.CLIENT_ID)
.tenantId(Constants.AUTH_TENANT)
.challengeConsumer(challange -> System.out.println("**" +
challange.getMessage())).build();
System.out.println(deviceCodeCred.toString());
TokenCredentialAuthProvider tokenCredentialAuthProvider = new
TokenCredentialAuthProvider(graphApiScopes,
deviceCodeCred);
System.out.println("Token " + tokenCredentialAuthProvider.toString());
GraphServiceClient graphServiceClient = GraphServiceClient.builder()
.authenticationProvider(tokenCredentialAuthProvider).buildClient();
System.out.println(graphServiceClient.toString());
return new AccessProvider(graphServiceClient, tokenCredentialAuthProvider);
}
public static void main(String[] args) {
AccessProvider accessProvider = initializeGraphForUserAuth();
System.out.println("token : " + accessProvider.accessToken());
System.out.println("User name : " + accessProvider.getServiceClient().users());
User user = accessProvider.getServiceClient().me().buildRequest().get();
final MessageCollectionPage messagePage = accessProvider.getServiceClient().me().messages().buildRequest()
.top(3).select("subject").get();
List messageList = messagePage.getCurrentPage();
for (Message msg : messageList) {
System.out.println("Subject -> " + msg.subject);
}
}
Die Ausgabe des obigen Codes ist wie folgt
Code: Select all
To sign in, use a web browser to open the page
https://microsoft.com/devicelogin and enter
the code ABCDEFGHI to authenticate.