사용자 인증 - C++ SDK
이 페이지의 내용
로그인
익명의 사용자
App Services UI 에서 익명 인증 을 활성화한 경우 사용자는 식별 정보를 제공하지 않고도 앱 에 즉시 로그 할 수 있습니다.
auto appConfig = realm::App::configuration(); appConfig.app_id = APP_ID; auto app = realm::App(appConfig); auto user = app.login(realm::App::credentials::anonymous()).get();
이메일/비밀번호 사용자
이메일/비밀번호 인증 을 활성화 하고 이메일/비밀번호 사용자를 등록한 경우 해당 사용자를 로그인할 수 있습니다.
auto user = app.login(realm::App::credentials::username_password( userEmail, userPassword)) .get();
API 키 사용자
API 키 인증 을 활성화한 경우 사용자 API 키를 사용하여 로그인할 수 있습니다.
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();
사용자 지정 기능 사용자
사용자 지정 함수 인증 제공자 를 활성화한 경우 사용자 지정 함수를 사용하여 로그인할 수 있습니다.
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();
사용자 지정 JWT 사용자
사용자 지정 JSON web token 인증 제공자 를 활성화한 경우, 사용자 지정 JSON web token을 사용하여 로그인할 수 있습니다.
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();
Facebook 사용자
Facebook 인증 제공자를 사용하면 기존 Facebook 계정을 사용하여 Facebook 앱을 통해 사용자를 인증할 수 있습니다.
중요
Facebook 프로필 사진 URL 저장 안 함
Facebook 프로필 사진 URL에는 이미지 권한을 부여하는 사용자의 액세스 토큰이 포함되어 있습니다. 보안을 위해 사용자의 액세스 토큰이 포함된 URL을 저장하지 마세요. 대신 이미지를 가져와야 할 때 사용자의 메타데이터 필드에서 직접 URL에 액세스합니다.
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();
Google 사용자
Google 인증 제공자 를 구성한 경우 기존 Google 계정을 사용하여 로그인할 수 있습니다.
Google 인증 코드로 로그인하려면 Google 인증 코드를 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();
Google ID 토큰으로 로그인하려면 Google ID 토큰을 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();
Apple 사용자
Apple 인증으로 로그인 을 활성화한 경우 Apple ID 토큰을 사용하여 사용자를 로그인할 수 있습니다.
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();
사용자 액세스 토큰 받기
Realm SDK는 액세스 토큰을 자동으로 관리하고 만료되면 갱신하며 요청마다 현재 사용자에 대한 유효한 액세스 토큰을 포함합니다.
SDK 외부로 요청을 보내는 경우 각 요청에 사용자의 액세스 토큰을 포함해야 합니다. 이 시나리오에서는 토큰이 만료되면 수동으로 새로 고쳐야 합니다. 액세스 토큰은 30 분 후에 만료됩니다.
로그인한 사용자에 대해 .refresh_custom_user_data() 를 호출하여 사용자의 인증 세션을 새로 고칠 수 있습니다. 그런 다음 .access_token() 코드에서 사용할 수 있는 string 로 변환합니다. 다음과 유사한 코드를 사용하여 액세스 토큰을 가져올 수 있습니다.
// 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();
토큰 만료 새로 고침
새로 고침 토큰은 일정 시간이 지나면 만료됩니다. 새로 고침 토큰이 만료되면 액세스 토큰을 더 이상 새로 고칠 수 없으며 사용자는 다시 로그인해야 합니다.
영역이 열린 후 새로 고침 토큰이 만료되면 사용자가 다시 로그인할 때까지 장치를 동기화할 수 없습니다. 동기화 오류 처리기는 동기화를 시도할 때 토큰 만료 오류를 포착한 다음 사용자를 로그인 흐름으로 리디렉션하는 로직을 구현해야 합니다.
새로 고침 토큰 만료 구성에 대한 자세한 내용은 App Services 문서에서 사용자 세션 관리를 참조하세요.
로그아웃
로그인한 후에는 로그아웃할 수 있습니다.
경고
사용자가 로그아웃하면 사용자가 연 동기화된 영역에서 더 이상 데이터를 읽거나 쓸 수 없습니다. 따라서 최초 사용자가 로그아웃하기 전에 아직 완료되지 않은 작업이 성공적으로 완료되지 않으며 오류가 발생할 수 있습니다. 이러한 방식으로 실패한 쓰기 작업의 모든 데이터는 손실됩니다.
user.log_out().get();
현재 사용자 가져오기
app::get_current_user()
로 현재 사용자를 가져올 수 있습니다.
auto currentUser = app.get_current_user();
사용자 로그인 확인
사용자가 user::is_logged_in()
으)로 로그인했는지 확인할 수 있습니다.
auto user = app.login(realm::App::credentials::anonymous()).get(); CHECK(user.is_logged_in());