- Fixed issue with LINK Kit not respecting user logged in status when attempting to open the Vault from its settings.
- No changes to SDK.
- Made corrections to the text of the sample app, "AwesomeApp."
- No changes to SDK.
- Made corrections to the text of the sample app, "AwesomeApp."
Hotfix, for an issue with Passwordless Login not working when opening the Moneytree Account settings.
We have introduced a new authentication configuration parameter that will allow you to choose your preferred mode (Authentication, Passwordless, Single Sign On) when the Moneytree authentication web page shows. This configuration does not guarantee that the selected mode will be the one presented as the feature relies on the configuration of the client ID provided to you.
If you do not provide the new configuration, the default order of available methods configured in you client ID will be used.
For more on the feature and how it works, please refer to Choosing your Authentication method.
AuthenticationMethodenum that allows to choose your preferred authentication mode.createfunction inLinkAuthOptions'scompanion objectto provide a Kotlin friendly way to build the object.createfunctions inMoneytreeLinkConfiguration'scompanion objectto provide a Kotlin friendly way to build the object. There is an overload of the function providing the ability to add scopes directly asStrings or using theMoneytreeLinkScopeenum.- For Java user the overloads appear with the names
createWithStringScopesandcreateWithEnumScopes.
- For Java user the overloads appear with the names
MoneytreeLinkConfiguration.Buildernow providesauthenticationMethodwith which you can set the authentication method.
Added additional scope, RequestRefresh, to LINK Kit.
Improved internal state (OAuth) handling.
For Code Grant the SDK would require simple, unencoded strings to be provided. This change removes that requirement.
Improved handling of app revocation for LINK Kit. If an end user has revoked authorization for your application, instead of returning an error, LINK Kit will automatically give the user an opportunity to re-authenticate. This reduces the need for error handling for LINK Kit implementations.
- Calling
MoneytreeLink#logoutwill result to only one (instead of two)LinkEvent.LoggedOutevent be sent toLinkResultListenerlisteners at the end of a successful logout flow. - This is to be consistent with previous versions of the SDK prior to version 6.
- Deprecated all types related to the ability to select Code Grant (without PKCE) as your auth type. Code Grant without PKCE will be removed in upcoming versions.
LinkAuthOptions.Builder.auth()LinkAuthFlow,LinkAuthFlow.CodeGrant,LinkAuthFlow.PkceMoneytreeLinkConfiguration.Builder.redirectUri()LinkError.FUNCTION_IS_NOT_AVAILABLE
- Updated SDK's
compileSdkto 33 - Updated Sample App's
targetSDKandcompileSDKto 33 - Changed in-app-browser handling to now allow use of any browser supporting the Custom Tabs framework.
- Introduced further filtering for Trusted Web Activities (TWA) for LINK Kit. LINK Kit now requires a TWA capable browser to be available.
- Introduced a separate
LinkError.LINK_KIT_NOT_SUPPORTEDto notify the client app when Trusted Web Activity is not available.
- Introduced a separate
- The SDK will now open Custom Tabs in the following order:
- Chrome stable or beta version
- System default browser if TWA capable
- Any available TWA capable browser
- System default browser if Custom Tabs capable
- Any available Custom Tabs capable browser.
- Updating from ISTC to LINKIT will no longer require user to re-authenticate with login credentials. They will only need to grant consent to the new LINKIT scopes.
- Remove
SchemeHandlerActivityand internally replace it withLinkHandlerActivity - Finalize implementation of
updateConfigurationby addressing some of it's internal issues
- Fixes an issue where LINK Kit would close, instead of re-authenticating, if the token did not have sufficient scopes.
ClientAccessToken now exposes the full OAuth token response in a backward compatible way.
New properties are:
ClientAccessToken.accessToken- same asClientAccessToken.valueClientAccessToken.refreshToken- use it for the OAuthrefreshgrant.ClientAccessToken.createdAtandClientAccessToken.expiresIn- inform you about the token's expiry.
ClientAccessToken.value is deprecated in favor of ClientAccessToken.accessToken.
❗ This version has known delivery issues. We have requested its removal from Maven Central but unfortunately is still available. Please skip this version and update to the latest one if you need the fixes mentioned here!
SchemeHandlerActivityis nowexported, this fixes an issue when building withtargetSDKVersionis31- Fixes an issue with closing LINK Kit
- Fixes an issue where opening a Login Link from email would fail to complete Code Grant auth flow
- Fixes an issue where Universal Vault unexpectedly opened the Add Services screen instead of the Financial Services list. If your implementation expects the first screen shown to be Add Services by default, you will need to open vault with
openVaultServicesOptionsinstead.
- Fixes an issue with OAuth including unnecessary parameters
- Fixes an issue with token storage when migrating from an earlier version of the SDK
- Improved documentation of sample app usage
- Fixes an internal encoding that impacted authentication in some use cases
- Improved documentation of Settings feature
Deprecates the following methods:
MoneytreeLink.requestMagicLink, useMoneytreeLink.requestLoginLinkinsteadMoneytreeLink.consumeMagicLink, useMoneytreeLink.consumeLoginLinkinsteadMoneytreeLink.registerFcmToken, useMoneytreeLink.registerRemoteTokeninsteadMoneytreeLink.unregisterFcmToken, useMoneytreeLink.unregisterRemoteTokeninstead
- Fixes and stability improvements in the LINK Kit integration
- all deprecated functions from 5.x have been removed.
onActivityResultfunctions have all been removed.LinkAuthOptionsreplacesMoneytreeAuthOptionsand ensures greater compile-time safety.ClientAccessTokenreplacesOAuthTokenin PKCE configurations.MoneytreeAuthCompletionhas been removed.WebActionListenerhas been removed.OAuthCredentialProviderhas been removed.OAuthHandlerhas been removed.Apilistener had been removed and is replaced by theActionlistener.
- Requires Android 6+
-
MoneytreeLink.initnow takes aLinkResultListenerso you can listen to SDK event's for the lifetime of your app. -
LinkRequestContextno longer takes anActivityorFragment -
openVaultmust now be pass theActivityexplicitly. -
consumeMagicLinknow uses the action callback; the callback is optional and may not always be called in the event Android OS kills the app;We Recommend using the
LinkResultListeneris yourApplication,ActivityorFragment#onCreateto ensure you get the result if the application is killed while background-ed and it's critical for your use case. -
MoneytreeLinkException.Errorhas been renamedLinkError -
setLogoutHandlerhas been removed and is replaced byLinkResult.Event(LoggedOut)inLinkResultListener -
authorizeFromwas renamedauthorize -
authorizenow takes theLinkAuthOptions.Authorizesub-type. -
onboardFromwas renamedonboard -
onboardnow takes theLinkAuthOptions.Onboardingsub-type. -
logoutFromwas renamedlogoutas no longer takes a requestCode. -
openSettingsFromwas renamedopenSettings -
registerDeviceTokenFromwas renamed toregisterFcmToken& the callback type was updated toActionlistener. -
unregisterDeviceTokenFromwas renamed tounregisterFcmToken& the callback type was updated toActionlistener. -
getTokenInfocan be used to get the OAuth token info ifstayLoggedInis enabled. -
getTokenno longer takes a callback and instead you need to use theLinkResultListenerviaMoneytreeLink.addOnResultListener -
updateConfigurationwas added.- it's not recommended that you use
updateConfigurationin the 6.0 release as the implementation is not final and is subject to change. Hence it is marked as@deprecated. Once the implementation is finalized we will remove the deprecation flag.
- it's not recommended that you use
The LinkResultListener replaces most of the callbacks in the SDK. LinkResultListener is able to survive the OS killing the app when opening Vault or authorizing users. LinkResultListener also removes the need for the onActivityResult. LinkResultListener means that you never miss success or error results from the SDK.
We recommend that you put the addOnLinkResult in your Activity or Fragments onCreate to ensure that your callbacks are re-attached to the SDK when the application is being re-created.
LinkResult is the new unified event result class. Authorization, Events and Errors are all reported using a LinkResult type.
Authorized- Is emitted when the SDK finished an authorization flow.- In PKCE configured applications the
Authorizedthetokenproperty will not be null. - In CodeGrant configured the
Authorizedthetokenproperty will always be null. MoneytreeLinkExtensionsextension functiononPkceAuthorizedandonCodeGrantAuthorizedhandle the null check
- In PKCE configured applications the
Event- Is emitted when the SDK triggers a noticeable event.ExternalOAuthAdded: An OAuth account was added when using a browser outside of the App.LinkWebSessionStarted: An In-App-Browser is about open and the app is about to be background-ed.LinkWebSessionFinished: An In-App-Browser has closed and the app has returned to the foreground.LoggedOut: Logout flow finished successfully.RequestCancelled:The user has closed the In-App-Browser without any expected callbacks been triggered.VaultOpened: The Vault is about to be opened.VaultClosed: The Vault was opened and is now closed retuning the app to the foreground
Error- An exception occurred or an error was returned to the SDK and this resulted in anMoneytreeLinkException
Theses are Kotlin extensions that make consuming LinkResults easier. They also work in Java.
onLoggedOut- will register a lifecycleOwner scoped listener for loggedOut eventsonPkceAuthorized- will register a lifecycleOwner scoped listener for PKCE authorizations events.onCodeGrantAuthorized- will register a lifecycleOwner scoped listener for CodeGrant authorizations events.onError- will register a lifecycleOwner scoped listener for any SDK Error's.onEvent- will register a lifecycleOwner scoped listener for any SDK Events.
- Deprecates all Vault navigation interface methods
- Adds
openVault(requestCode, requestContext)andopenVault(requestContext)variant to replace previous navigation methods.- The
requestCodeis an Android activity result code. Checking for it in youronActivityResultcallback along withMoneytreeLink.RESULT_CODE_VAULT_CLOSEDwill provide you with information of when the Vault Browser has closed. Supports both Activities and Fragments. - Adds
LinkRequestContext. Use its builder to provide all required information for vault navigation.
- The
- Improvements to the Vault navigation interface methods added in v5.2.0
- Adds
MoneytreeLinkConfiguration.Builder.linkEnvironment(). Takes aLinkEnvironmentto switch between the staging and production back ends. - Adds new scopes
- Adds new Exception types and a new
Action.OnErrorListenerfor better error management.
Adds the following Vault navigation interface methods:
openVaultFrom(activity, listener, path)that helps deep link to specific vault paths.openCustomerSupport(...)x2 variants. Deep link to the Vault's customer support page.connectService(...)x2 variants. Deep link to the Vault's service information page. Requires a service key to navigate.serviceSetting(...)x2 variants. Deep link to a service's settings page.openServices(...)x2 variants. Receives aVaultOpenServicesOptionsand deep links to the Vault's search screen with relevant results.VaultOpenServicesOptionsholds all the search parameters required to get results in the services screen.
Constructing a VaultOpenServicesOptions object:
val options = VaultOpenServicesOptions.Builder()
.type("bank")
.group("grouping_bank")
.search("aeon")
.build()For more information on usage please refer to the JavaDocs and the AwesomeApp (example).
MoneytreeLink#client()is now deprecated. UseMoneytreeLink#getInstance()instead.
- Minimum supported Android is now Android 5+ (API level 21+)
- Removed deprecated methods at
MoneytreeLinkclass - A
listenerforopenVaultFromhas been changed toAction.OnCompletionListenerfromAuthorization.OnCompletionListener. You need to callgetToken()whenever you want anaccessToken. - Updated versions of dependencies. See also Set up dependencies and manifest section above.
The timing of callbacks originating from openVault and openSettings has been changed. In previous versions, callbacks returned when the Browser opened. Since v4.1.1 they return when users close the Browser (UI button or system back button).
We introduced MoneytreeAuthOptions class that replaces the array of variables previously used in authorizeFrom method. You can refactor your existing code by following the examples above. As described in JavaDoc, existing contracts of authorizeFrom will be removed in the next version.
⚠️ All web content is now handled withChrome Custom Tabs, effectively removing support for other browsers. The SDK returns aMoneytreeLinkException.Error.BROWSER_NOT_SUPPORTEDin theonErrorof theOnCompletionHandlerfor every flow that requires Chrome. Make sure to account for this error in case Chrome is not installed on the user's device.
// Any completionHandler code
override fun onError(exception: MoneytreeLinkException) {
if (exception.getError() == MoneytreeLinkException.Error.BROWSER_NOT_SUPPORTED) {
// You can ask user to [install Android System WebView] or [change default browser to Google Chrome] here
}
}MoneytreeLink SDK v3 brings some breaking changes to class names. The following is just an example. Refer to the JavaDocs and Awesome app's MainActivity for more information.
| Old Class Name | New Class Name | Note |
|---|---|---|
| CompletionHandler | Authorization.OnCompletionListener | Methods for authorization |
| (same as above) | Action.OnCompletionListener | Used for openSettings, openInstitution |
| MoneytreeLink.ApiCompletionHandler | Api.OnCompletionListener | Renamed |
| IsshoTsucho.CompletionHandler | IsshoTsucho.OnCompletionListener | Renamed |
| s |