Docs Menu
Docs Home
/ /
Administrar usuarios

Autenticar usuarios - SDK de C++

Si lo has habilitado Autenticación anónima en la interfaz de usuario de App Services: los usuarios pueden iniciar sesión inmediatamente en su aplicación sin proporcionar ninguna información de identificación.

auto appConfig = realm::App::configuration();
appConfig.app_id = APP_ID;
auto app = realm::App(appConfig);
auto user = app.login(realm::App::credentials::anonymous()).get();

Si has habilitado la autenticación por correo electrónico/contraseña, y has registrado a un usuario con correo electrónico/contraseña, puedes iniciar la sesión de ese usuario.

auto user = app.login(realm::App::credentials::username_password(
userEmail, userPassword))
.get();

Si ha habilitado la autenticación de clave API, puede iniciar sesión usando una clave API de usuario.

auto appConfig = realm::App::configuration();
appConfig.app_id = APP_ID;
auto app = realm::App(appConfig);
auto user = app.login(realm::App::credentials::api_key(API_KEY)).get();

Si ha habilitado el proveedor de autenticación de función personalizada, puede iniciar sesión utilizando una función personalizada.

auto appConfig = realm::App::configuration();
appConfig.app_id = APP_ID;
auto app = realm::App(appConfig);
/* Custom function authentication takes a string parameters argument.
The parameter details vary depending on how you define your custom
authentication function. */
std::string params = "{\"username\": \"bob\"}";
auto user = app.login(realm::App::credentials::function(params)).get();

Si ha habilitado el proveedor de autenticación JWT personalizado, puede iniciar sesión usando un JWT personalizado.

auto token = "<jwt>";
auto appConfig = realm::App::configuration();
appConfig.app_id = APP_ID;
auto app = realm::App(appConfig);
auto user = app.login(realm::App::credentials::custom(token)).get();

El proveedor de autenticación de Facebook le permite autenticar usuarios a través de una aplicación de Facebook utilizando su cuenta de Facebook existente.

Importante

Habilitar el proveedor de autenticación de Facebook

Para iniciar sesión un usuario con su cuenta de Facebook existente, debe configurar y habilitar el proveedor de autenticación de Facebook para su aplicación.

Importante

No almacene las URL de las imágenes de perfil de Facebook

Las URL de las fotos de perfil de Facebook incluyen el token de acceso del usuario para otorgar permiso a la imagen. Para garantizar la seguridad, no guardes una URL que incluya el token de acceso del usuario. En su lugar, accede a la URL directamente desde los campos de metadatos del usuario cuando necesites obtener la imagen.

auto appConfig = realm::App::configuration();
appConfig.app_id = APP_ID;
auto app = realm::App(appConfig);
auto accessToken = "<token>";
auto user = app.login(realm::App::credentials::facebook(accessToken)).get();

Si ha configurado el proveedor de autenticación de Google, puede iniciar sesión con una cuenta de Google existente.

Para iniciar sesión con un código de autenticación de Google, pase un código de autenticación de Google a credentials::google_auth_code().

auto appConfig = realm::App::configuration();
appConfig.app_id = APP_ID;
auto app = realm::App(appConfig);
// The user's server auth code you got from Google
auto myAuthCode = "auth_code_from_google";
auto user =
app.login(realm::App::credentials::google_auth_code(myAuthCode)).get();

Para iniciar sesión con un token de ID de Google, pase un token de ID de Google a credentials::google_id_token().

auto appConfig = realm::App::configuration();
appConfig.app_id = APP_ID;
auto app = realm::App(appConfig);
// The user's OpenID Connect id_token you got from the Google OAuth response
auto myIdToken = "open_id_connect_id_token_from_google";
auto user =
app.login(realm::App::credentials::google_id_token(myIdToken)).get();

Si ha habilitado el inicio de sesión con autenticación de Apple, puede iniciar sesión como usuario usando un token de ID de Apple.

auto appConfig = realm::App::configuration();
appConfig.app_id = APP_ID;
auto app = realm::App(appConfig);
auto idToken = "<token>";
auto user = app.login(realm::App::credentials::apple(idToken)).get();

El SDK de Realm administra automáticamente los tokens de acceso, los actualiza cuando vencen e incluye un token de acceso válido para el usuario actual con cada solicitud.

Si envía solicitudes fuera del SDK, debe incluir el token de acceso del usuario en cada solicitud. En este caso, debe actualizar el token manualmente cuando caduque. Los tokens de acceso caducan después de 30 minutos.

Puedes llamar a `.refresh_custom_user_data()` en un usuario conectado para actualizar su sesión de autenticación. Luego, obtén `.access_token()` como una cadena que puedes usar en tu código. Puedes usar un código similar a este para obtener un token de acceso:

// With a logged-in user, refresh the custom user data to refresh the auth
// session
user.refresh_custom_user_data().get();
// Then get the user's access token
auto userAccessToken = user.access_token();

Los tokens de actualización caducan tras un periodo determinado. Cuando caducan, el token de acceso ya no se puede actualizar y el usuario debe volver a iniciar sesión.

Si el token de actualización caduca después de abrir el dominio, el dispositivo no podrá sincronizarse hasta que el usuario vuelva a iniciar sesión. El controlador de errores de sincronización debe implementar una lógica que detecte un error de token caducado al intentar sincronizar y luego redirija a los usuarios a un flujo de inicio de sesión.

Para obtener información sobre cómo configurar la expiración del token de actualización, consulte Administrar sesiones de usuario en la documentación de App Services.

Una vez que haya iniciado sesión, puede cerrar la sesión.

Advertencia

Cuando un usuario cierra sesión, ya no se pueden leer ni escribir datos en los dominios sincronizados que haya abierto. Por lo tanto, cualquier operación que no se haya completado antes de que el usuario cierre sesión no podrá completarse correctamente y probablemente generará un error. Los datos de una operación de escritura que falle de esta manera se perderán.

user.log_out().get();

Puedes obtener el usuario actual con app::get_current_user():

auto currentUser = app.get_current_user();

Puedes confirmar que un usuario ha iniciado sesión con user::is_logged_in():

auto user = app.login(realm::App::credentials::anonymous()).get();
CHECK(user.is_logged_in());

Volver

Administrar usuarios

En esta página