Realm proporciona Muchos proveedores de autenticación permiten a los usuarios iniciar sesión en tu aplicación. Cada proveedor crea una identidad de usuario única. Realm te permite combinar varias credenciales en una sola.
Ejemplo
Considere una aplicación que ofrece inicio de sesión anónimo. Esto permite a los usuarios explorar la aplicación sin registrarse. Si les gusta la aplicación, crean cuentas permanentes. Se registran con SSO o autenticación por correo electrónico y contraseña. De forma predeterminada, esto crea una nueva cuenta. User objeto. La aplicación debe vincular la nueva identidad con el usuario original.
Puedes vincular identidades mediante LinkCredentialsAsync(). Esto vincula los proveedores de autenticación a un objeto de usuario conectado.
// 1) A user logs on anonymously: var anonUser = await app.LogInAsync(Credentials.Anonymous()); // 2) They create some data, and then decide they want to save // it, which requires creating an Email/Password account. // 3) We prompt the user to log in, and then use that info to // register the new EmailPassword user, and then generate an // EmailPassword credential to link the existing anonymous // account: var email = "caleb@mongodb.com"; var password = "MySekritPwd"; await app.EmailPasswordAuth.RegisterUserAsync( email, password); var officialUser = await anonUser.LinkCredentialsAsync( Credentials.EmailPassword(email, password));
En el ejemplo anterior, primero debemos registrar el nuevo usuario email/password antes de enlazar. Si estás utilizando alguno de los otros Proveedores de autenticación, este paso no es necesario. El siguiente ejemplo utiliza la autenticación de Google en lugar de EmailPassword:
var anonUser = await app.LogInAsync(Credentials.Anonymous()); var officialUser = await anonUser.LinkCredentialsAsync( Credentials.Google("<google-token>", GoogleCredentialType.AuthCode));