code: public Future<DeviceCode> acquireDeviceCode(final String clientId, final String resource,
                                                  final AuthenticationCallback<DeviceCode> callback) {
          validateDeviceCodeRequestInput(clientId, resource);
          return service.submit(
                  new AcquireDeviceCodeCallable(this, clientId, resource, callback));
      }
docs: Acquires a device code from the authority
  
  @param clientId Identifier of the client requesting the token
  @param resource Identifier of the target resource that is the recipient of the
  requested token.
  @param callback optional callback object for non-blocking execution.
  @return A {@link Future} object representing the {@link DeviceCode} of the call.
  It contains device code, user code, its expiration date,
  message which should be displayed to the user.
  @throws AuthenticationException thrown if the device code is not acquired successfully