Link User Identities - Java SDK
On this page
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.
Example
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}" ) } }