code: @SuppressWarnings("WeakerAccess")
      public AuthenticationRequest loginWithOTP(@NonNull String mfaToken, @NonNull String otp) {
          Map<String, Object> parameters = ParameterBuilder.newBuilder()
                  .setGrantType(GRANT_TYPE_MFA_OTP)
                  .set(MFA_TOKEN_KEY, mfaToken)
                  .set(ONE_TIME_PASSWORD_KEY, otp)
                  .asDictionary();
  
          return loginWithToken(parameters);
      }
docs: Log in a user using the One Time Password code after they have received the 'mfa_required' error.
  The MFA token tells the server the username or email, password and realm values sent on the first request.
  Requires your client to have the <b>MFA</b> Grant Type enabled. See <a href="https://auth0.com/docs/clients/client-grant-types">Client Grant Types</a> to learn how to enable it.* Example usage:
  <pre>
  {@code
  client.loginWithOTP("{mfa token}", "{one time password}")
  .start(new BaseCallback<Credentials>() {
  {@literal}Override
  public void onSuccess(Credentials payload) { }
  
  {@literal}Override
  public void onFailure(AuthenticationException error) { }
  });
  }
  </pre>
  
  @param mfaToken the token received in the previous {@link #login(String, String, String)} response.
  @param otp      the one time password code provided by the resource owner, typically obtained from an
  MFA application such as Google Authenticator or Guardian.
  @return a request to configure and start that will yield {@link Credentials}