private AuthenticationResult acquireAccessTokenUsingDeviceCodeFlow() throws Exception { AuthenticationContext context = null; AuthenticationResult result = null; ExecutorService service = null; try { service = Executors.newSingleThreadExecutor(); context = new AuthenticationContext( aadAuthorityUri, true, service); Future<DeviceCode> future = context.acquireDeviceCode(CLIENT_ID, clusterUrl, null); DeviceCode deviceCode = future.get(); System.out.println(deviceCode.getMessage()); if (Desktop.isDesktopSupported()) { Desktop.getDesktop().browse(new URI(deviceCode.getVerificationUrl())); } result = waitAndAcquireTokenByDeviceCode(deviceCode, context); } finally { if (service != null) { service.shutdown(); } } if (result == null) { throw new ServiceUnavailableException("authentication result was null"); } return result; }
try { final AuthenticationContext ctx = new AuthenticationContext(authority, true, service); final DeviceCode deviceCode = ctx.acquireDeviceCode(clientId, resource, null).get(); final IDeviceLoginUI deviceLoginUI = CommonSettings.getUiFactory().getDeviceLoginUI(); result = deviceLoginUI.authenticate(ctx, deviceCode, callback);