Docs Menu
Docs Home
/ /
Atlas Device SDK
/ /

사용자 인증 - C++ SDK

이 페이지의 내용

  • 로그인
  • 익명의 사용자
  • 이메일/비밀번호 사용자
  • API 키 사용자
  • 사용자 지정 기능 사용자
  • 사용자 지정 JWT 사용자
  • Facebook 사용자
  • Google 사용자
  • Apple 사용자
  • 사용자 액세스 토큰 받기
  • 토큰 만료 새로 고침
  • 로그아웃
  • 현재 사용자 가져오기
  • 사용자 로그인 확인

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 키를 사용하여 로그인할 수 있습니다.

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

사용자 지정 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 계정으로 사용자를 로그인하려면 애플리케이션에 대한 인증 공급자를 구성하고 활성화해야 합니다.

중요

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 인증 코드를 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 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());

돌아가기

사용자 관리