Menu Docs
Página inicial do Docs
/ /
Atlas Device SDKs
/ /

Autenticar usuários - C++ SDK

Nesta página

  • Conecte-se
  • Utilizador anónimo
  • Usuário de e-mail/senha
  • Usuário da chave de API
  • Usuário de função personalizada
  • Usuário JWT personalizado
  • Usuário do Facebook
  • Usuário do Google
  • Usuário da Apple
  • Obtenha um token de acesso do usuário
  • Atualize a expiração do token
  • Desconecte
  • Obter o usuário atual
  • Confirmar se um usuário está conectado

Se você ativou aautenticação anônima na interface do usuário do App Services, os usuários podem fazer login imediatamente no seu aplicativo sem fornecer nenhuma informação de identificação.

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

Se você tiver ativado a autenticação por e-mail/senha e registrado um usuário de e-mail/senha, poderá fazer login desse usuário.

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

Se você ativou a autenticação por chave de API, poderá fazer login usando uma chave de API do usuário.

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();

Se você tiver ativado o provedor de autenticação Custom Function, poderá fazer login usando uma função 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();

Se você tiver ativado o provedor de autenticação de token JSON web personalizado, poderá fazer login usando um token web JSON 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();

O provedor de autenticação do Facebook permite que você autentique usuários por meio de um aplicativo do Facebook usando sua conta existente do Facebook.

Importante

Habilite o provedor de autenticação do Facebook

Para conectar um usuário com uma conta do Facebook existente, você deve configurar e habilitar o provedor de autenticação do Facebook para seu aplicativo.

Importante

Não armazene URLs de fotos de perfil do Facebook

Os URLs da imagem de perfil do Facebook incluem o token de acesso do usuário para conceder permissão à imagem. Para garantir a segurança, não armazene um URL que inclua um token de acesso do usuário. Em vez disso, acesse o URL diretamente dos campos de metadados do usuário quando precisar buscar a imagem.

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();

Se você configurou o provedor de autenticação do Google, poderá se conectar usando uma conta existente do Google.

Para fazer login com um código de autenticação do Google, passe um código de autenticação do Google para credenciais::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 fazer login com um token de ID do Google, passe um token de ID do Google para credenciais::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();

Se você tiver ativado o Iniciar sessão com autenticação Apple, poderá iniciar a sessão de um usuário usando um token de ID 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();

O Realm SDK gerencia automaticamente os tokens de acesso, atualiza-os quando expiram e inclui um token de acesso válido para o usuário atual em cada solicitação.

Se você enviar solicitações fora do SDK, deverá incluir o token de acesso do usuário em cada solicitação. Neste cenário, você deve atualizar manualmente o token quando ele expirar. Os tokens de acesso expiram após 30 minutos.

Você pode ligar para .refresh_custom_user_data() em um usuário conectado para atualizar a sessão de autenticação do usuário. Em seguida, obtenha o .access_token() como uma string que você pode usar em seu código. Você pode usar código semelhante a este para buscar um token de acesso:

// 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();

A atualização dos tokens expira após um período de tempo definido. Quando o token de atualização expira, o token de acesso não pode mais ser atualizado e o usuário deve se conectar novamente.

Se o token de atualização expirar após a abertura do domínio, o dispositivo não poderá sincronizar até que o usuário faça login novamente. Seu manipulador de erros de sincronização deve implementar uma lógica que capture um erro de token expirado ao tentar sincronizar e, em seguida, redirecionar os usuários para um fluxo de login.

Para obter informações sobre como configurar a expiração do token de atualização, consulte Gerencie sessões de usuário na documentação do App Services.

Uma vez logado, você pode sair.

Aviso

Se o usuário se desconectar, você não poderá mais ler ou gravar dados em nenhum domínio sincronizado que o usuário tenha aberto. Consequentemente, qualquer operação que ainda não tenha sido concluída antes de o usuário iniciar o logout não poderá ser concluída com êxito e provavelmente resultará em erro. Todos os dados de uma operação de gravação que falhar dessa forma serão perdidos.

user.log_out().get();

Você pode obter o usuário atual com app::get_current_user():

auto currentUser = app.get_current_user();

Você pode confirmar que um usuário está conectado com user::is_logged_in():

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

Voltar

Gerenciar usuários