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
Conecte-se
Utilizador anónimo
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();
Usuário de e-mail/senha
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();
Usuário da chave de API
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();
Usuário de função personalizada
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();
Usuário JWT personalizado
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();
Usuário do Facebook
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();
Usuário do Google
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();
Usuário da Apple
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();
Obtenha um token de acesso do usuário
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();
Atualize a expiração do 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.
Desconecte
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();
Obter o usuário atual
Você pode obter o usuário atual com app::get_current_user()
:
auto currentUser = app.get_current_user();
Confirmar se um usuário está conectado
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());