Docs Menu
Docs Home
/ /
Atlas Device SDKs
/ /

Link User Identities - Java SDK

On this page

  • Example

Realm provides many authentication providers to log users into your app. Each provider creates a unique user identity. Realm lets you merge multiple credentials into one user identity.

Credentials must be linked prior to logging a user in. Once credentials are used to login a user, you cannot link that credential anymore. Also, you cannot link multiple email/password credentials together.

Consider an application that offers anonymous login, which allows users to explore the app without registering. If a user wants to continue using the application, they can create a permanent account by using another authentication provider. Realm creates a new User object. The app can then link the new identity with the current user.

Note

Depending on how you have configured email/password authentication, there may be additional steps (confirming the email address, for example) before the new account is created and can be linked.

You link identities using linkCredentials() or linkCredentialsAsync(). This links the new user identity to the logged-in User object.

// The user has previously created an email/password account
user.linkCredentialsAsync(
Credentials.emailPassword(email, password), result -> {
if (result.isSuccess()) {
Log.v("EXAMPLE", "Successfully linked existing user " +
"identity with email/password user: " + result.get());
} else {
Log.e("EXAMPLE", "Failed to link user identities with: " +
result.getError());
}
});
// The user has previously created an email/password account
user.linkCredentialsAsync(
Credentials.emailPassword(
email,
password
)
) { result ->
if (result.isSuccess) {
Log.v(
"EXAMPLE",
"Successfully linked existing user identity " +
"with email/password user: ${result.get()}"
)
} else {
Log.e(
"EXAMPLE",
"Failed to link user identities with: ${result.error}"
)
}
}

Back

Multi-User Applications

On this page