Instruction for upgrading the Onegini Android SDK to version 9.0

When upgrading to version 9.0 some changes have to be applied in the end application:

Fixed typo in one of OneginiClientBuilder methods

The OneginiClientBuilder used to have public method:

public OneginiClientBuilder setFingerprintAuthenticatioRequestHandler(@NonNull final OneginiFingerprintAuthenticationRequestHandler fingerprintAuthenticatioRequestHandler) {

The method had a spelling error, there was a missing n in Authentication word. The issue is fixed now, the new name of the method is:

public OneginiClientBuilder setFingerprintAuthenticationRequestHandler(@NonNull final OneginiFingerprintAuthenticationRequestHandler fingerprintAuthenticationRequestHandler) {

The functionality of the method stays the same.

CustomAuthenticatorInfo

The customAuthenticatorInfo class was renamed to CustomInfo. The object is now used to provide results of both custom authentication and custom registration.

OneginiErrorDetails

The getCustomAuthenticatorInfo method from the OneginiErrorDetails has been renamed to getCustomInfo.

OneginiRegistrationHandler

The OneginiRegistrationHandler.onSuccess() has received and additional CustomInfo param:

void onSuccess(UserProfile userProfile, CustomInfo customInfo);

In a case when the user has registered using the CustomIdentityProvider, the object will contain the success status code and optional data received from the Extension Engine. Otherwise, the object will be null.

com.onegini.mobile.sdk.android.handlers.customauth

All public interfaces from com.onegini.mobile.sdk.android.handlers.customauth package has been moved to com.onegini.mobile.sdk.android.handlers.action package.

UserClient#registerUser method

The registerUser method from the UserClient takes additional param: the Identity Provider.

  /**
   * Registers a new profile using the specified OneginiIdentityProvider. The new profile will be generated during the registration process and returned
   * with a success callback.
   *
   * @param identityProvider    the {@link OneginiIdentityProvider} that is used for the registration or null for default.
   * @param scopes              the scopes authentication is requested for, when no scopes are requested the default scopes of the application will be used.
   * @param registrationHandler the registration handler to return the authentication result to
   */
  @SuppressWarnings("unused")
  public void registerUser(@Nullable final OneginiIdentityProvider identityProvider, @NonNull final String[] scopes,
                           @NonNull final OneginiRegistrationHandler registrationHandler) {
    sdkClient.registerUser(identityProvider, scopes, registrationHandler);
  }

This allows you to use the multiple Identity Providers feature. In case when you don't want to use the feature, you can pass null as the first param to let the SDK use the default IDP from the TS config.

OneginiRegistrationRequestHandler

The OneginiRegistrationRequestHandler has been renamed to OneginiBrowserRegistrationRequestHandler.

The OneginiBrowserRegistrationRequestHandler implementation is not required anymore if the app doesn't use browser registration (i.e. when registration is done using custom Identity Provider). Because of that the OneginiClientBuilder doesn't require this object in the constructor anymore:

  /**
   * Initialize new OneginiBuilder instance.
   *
   * @param context                         Application context should be provided to initialize the SDK
   * @param createPinRequestHandler         instance of {@link OneginiCreatePinRequestHandler} that's responsible for creating new PIN
   * @param pinAuthenticationRequestHandler instance of {@link OneginiPinAuthenticationRequestHandler} that's responsible for authenticating with PIN
   */
  public OneginiClientBuilder(@NonNull final Context context, @NonNull final OneginiCreatePinRequestHandler createPinRequestHandler,
                              @NonNull final OneginiPinAuthenticationRequestHandler pinAuthenticationRequestHandler) {
    // ...
  }

However, if you want to use browser registration, you should still provide the registration handler through new method of the OneginiClientBuilder:

  /**
   * Sets the {@link OneginiBrowserRegistrationRequestHandler} implementation that has to be used for authenticating in a web browser.
   *
   * @param browserRegistrationRequestHandler instance of {@link OneginiBrowserRegistrationRequestHandler} that's responsible for authenticating in web browser
   * @return {@link OneginiClientBuilder}
   */
  @SuppressWarnings("unused")
  public OneginiClientBuilder setBrowserRegistrationRequestHandler(@NonNull final OneginiBrowserRegistrationRequestHandler browserRegistrationRequestHandler) {
    // ...
  }

OneginiRegistrationCallback

The OneginiRegistrationCallback has been renamed to OneginiBrowserRegistrationCallback.