private AuthenticationResult waitAndAcquireTokenByDeviceCode(DeviceCode deviceCode, AuthenticationContext context) throws InterruptedException{ int timeout = 15 * 1000; AuthenticationResult result = null; while (timeout > 0){ try{ Future<AuthenticationResult> futureResult = context.acquireTokenByDeviceCode(deviceCode, null); return futureResult.get(); } catch (ExecutionException e) { Thread.sleep(1000); timeout -= 1000; } } return result; }