Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion app-auth/graphapponlytutorial/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ plugins {
repositories {
// Use Maven Central for resolving dependencies.
mavenCentral()
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
}

// <DependenciesSnippet>
Expand All @@ -24,7 +25,7 @@ dependencies {
// This dependency is used by the application.
implementation 'com.google.guava:guava:33.0.0-jre'
implementation 'com.azure:azure-identity:1.11.1'
implementation 'com.microsoft.graph:microsoft-graph:5.80.0'
implementation 'com.microsoft.graph:microsoft-graph:6.1.0'
}
// </DependenciesSnippet>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
import java.util.Scanner;

import com.microsoft.graph.models.User;
import com.microsoft.graph.requests.UserCollectionPage;
// </ImportSnippet>
import com.microsoft.graph.models.UserCollectionResponse;

public class App {
// <MainSnippet>
Expand Down Expand Up @@ -102,16 +102,16 @@ private static void displayAccessToken() {
// <ListUsersSnippet>
private static void listUsers() {
try {
final UserCollectionPage users = Graph.getUsers();
final UserCollectionResponse users = Graph.getUsers();

// Output each user's details
for (User user: users.getCurrentPage()) {
System.out.println("User: " + user.displayName);
System.out.println(" ID: " + user.id);
System.out.println(" Email: " + user.mail);
for (User user: users.getValue()) {
System.out.println("User: " + user.getDisplayName());
System.out.println(" ID: " + user.getId());
System.out.println(" Email: " + user.getMail());
}

final Boolean moreUsersAvailable = users.getNextPage() != null;
final Boolean moreUsersAvailable = users.getOdataNextLink() != null;
System.out.println("\nMore users available? " + moreUsersAvailable);
} catch (Exception e) {
System.out.println("Error getting users");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,21 @@
// <ImportSnippet>
package graphapponlytutorial;

import java.util.List;
import java.util.Properties;

import com.azure.core.credential.AccessToken;
import com.azure.core.credential.TokenRequestContext;
import com.azure.identity.ClientSecretCredential;
import com.azure.identity.ClientSecretCredentialBuilder;
import com.microsoft.graph.authentication.TokenCredentialAuthProvider;
import com.microsoft.graph.requests.GraphServiceClient;
import com.microsoft.graph.requests.UserCollectionPage;

import okhttp3.Request;
import com.microsoft.graph.models.UserCollectionResponse;
import com.microsoft.graph.serviceclient.GraphServiceClient;
// </ImportSnippet>

public class Graph {
// <AppOnyAuthConfigSnippet>
private static Properties _properties;
private static ClientSecretCredential _clientSecretCredential;
private static GraphServiceClient<Request> _appClient;
private static GraphServiceClient _appClient;

public static void initializeGraphForAppOnlyAuth(Properties properties) throws Exception {
// Ensure properties isn't null
Expand All @@ -45,14 +41,8 @@ public static void initializeGraphForAppOnlyAuth(Properties properties) throws E
}

if (_appClient == null) {
final TokenCredentialAuthProvider authProvider =
new TokenCredentialAuthProvider(
// Use the .default scope when using app-only auth
List.of("https://graph.microsoft.com/.default"), _clientSecretCredential);

_appClient = GraphServiceClient.builder()
.authenticationProvider(authProvider)
.buildClient();
_appClient = new GraphServiceClient(_clientSecretCredential,
new String[] { "https://graph.microsoft.com/.default" });
}
}
// </AppOnyAuthConfigSnippet>
Expand All @@ -76,18 +66,17 @@ public static String getAppOnlyToken() throws Exception {
// </GetAppOnlyTokenSnippet>

// <GetUsersSnippet>
public static UserCollectionPage getUsers() throws Exception {
public static UserCollectionResponse getUsers() throws Exception {
// Ensure client isn't null
if (_appClient == null) {
throw new Exception("Graph has not been initialized for app-only auth");
}

return _appClient.users()
.buildRequest()
.select("displayName,id,mail")
.top(25)
.orderBy("displayName")
.get();
return _appClient.users().get(requestConfig -> {
requestConfig.queryParameters.select = new String[] { "displayName", "id", "mail" };
requestConfig.queryParameters.top = 25;
requestConfig.queryParameters.orderby = new String[] { "displayName" };
});
}
// </GetUsersSnippet>

Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
41 changes: 28 additions & 13 deletions app-auth/graphapponlytutorial/gradlew

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

35 changes: 19 additions & 16 deletions app-auth/graphapponlytutorial/gradlew.bat

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion user-auth/graphtutorial/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ plugins {
repositories {
// Use Maven Central for resolving dependencies.
mavenCentral()
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
}

// <DependenciesSnippet>
Expand All @@ -24,7 +25,7 @@ dependencies {
// This dependency is used by the application.
implementation 'com.google.guava:guava:33.0.0-jre'
implementation 'com.azure:azure-identity:1.11.1'
implementation 'com.microsoft.graph:microsoft-graph:5.80.0'
implementation 'com.microsoft.graph:microsoft-graph:6.1.0'
}
// </DependenciesSnippet>

Expand Down
22 changes: 11 additions & 11 deletions user-auth/graphtutorial/app/src/main/java/graphtutorial/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
import java.util.Scanner;

import com.microsoft.graph.models.Message;
import com.microsoft.graph.models.MessageCollectionResponse;
import com.microsoft.graph.models.User;
import com.microsoft.graph.requests.MessageCollectionPage;
// </ImportSnippet>

public class App {
Expand Down Expand Up @@ -105,8 +105,8 @@ private static void greetUser() {
final User user = Graph.getUser();
// For Work/school accounts, email is in mail property
// Personal accounts, email is in userPrincipalName
final String email = user.mail == null ? user.userPrincipalName : user.mail;
System.out.println("Hello, " + user.displayName + "!");
final String email = user.getMail() == null ? user.getUserPrincipalName() : user.getMail();
System.out.println("Hello, " + user.getDisplayName() + "!");
System.out.println("Email: " + email);
} catch (Exception e) {
System.out.println("Error getting user");
Expand All @@ -130,20 +130,20 @@ private static void displayAccessToken() {
// <ListInboxSnippet>
private static void listInbox() {
try {
final MessageCollectionPage messages = Graph.getInbox();
final MessageCollectionResponse messages = Graph.getInbox();

// Output each message's details
for (Message message: messages.getCurrentPage()) {
System.out.println("Message: " + message.subject);
System.out.println(" From: " + message.from.emailAddress.name);
System.out.println(" Status: " + (message.isRead ? "Read" : "Unread"));
System.out.println(" Received: " + message.receivedDateTime
for (Message message: messages.getValue()) {
System.out.println("Message: " + message.getSubject());
System.out.println(" From: " + message.getFrom().getEmailAddress().getName());
System.out.println(" Status: " + (message.getIsRead() ? "Read" : "Unread"));
System.out.println(" Received: " + message.getReceivedDateTime()
// Values are returned in UTC, convert to local time zone
.atZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime()
.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT)));
}

final Boolean moreMessagesAvailable = messages.getNextPage() != null;
final Boolean moreMessagesAvailable = messages.getOdataNextLink() != null;
System.out.println("\nMore messages available? " + moreMessagesAvailable);
} catch (Exception e) {
System.out.println("Error getting inbox");
Expand All @@ -158,7 +158,7 @@ private static void sendMail() {
// Send mail to the signed-in user
// Get the user for their email address
final User user = Graph.getUser();
final String email = user.mail == null ? user.userPrincipalName : user.mail;
final String email = user.getMail() == null ? user.getUserPrincipalName() : user.getMail();

Graph.sendMail("Testing Microsoft Graph", "Hello world!", email);
System.out.println("\nMail sent.");
Expand Down
Loading