문서 메뉴

문서 홈애플리케이션 개발Atlas Device SDK

이메일/비밀번호 사용자 - Flutter SDK

이 페이지의 내용

  • 시작하기 전에
  • 사용자 등록
  • 사용자 로그인
  • 신규 사용자의 이메일 주소 확인
  • 사용자 지정 확인 기능
  • 확인 이메일 전송하기
  • 사용자 확인 재시도
  • 사용자 확인 함수 재시도
  • 사용자 확인 이메일 재전송
  • 사용자 비밀번호 재설정
  • 재설정 함수 호출
  • 비밀번호 재설정 이메일 보내기

Atlas App Services의 이메일/비밀번호 인증 제공자를 통해 클라이언트 코드에서 새 계정을 등록하고, 이메일 주소를 확인하고, 사용자 비밀번호를 재설정할 수 있습니다.

경고

버전 0.5.0 주요 변경 사항

Realm Flutter SDK 버전 0.5.0에는 이메일/비밀번호 인증에 대한 호환성이 손상되는 변경이 포함됩니다. 이번 변경은 이전 버전의 SDK에서 비밀번호 끝에 유니코드 null 문자 \u0000 가 추가되는 버그를 수정합니다.

따라서 0.5.0 이상의 버전을 사용하도록 애플리케이션을 업그레이드한 후에는 사용자는 비밀번호를 재설정하거나 새 계정을 만들어야 합니다. 0.5.0으로 업데이트한 후에는 이전 비밀번호가 더 이상 작동하지 않습니다.

  1. App Services 앱을 생성합니다.

  2. 클라이언트 코드 작성을 시작하기 전에 App Services에서 제공하는 다양한 이메일/비밀번호 인증 흐름을 이해하고 애플리케이션에 대한 백엔드 구현을 구성해야 합니다. App Services에는 이메일/비밀번호 사용자 ID를 확인하고 사용자 비밀번호를 재설정할 수 있는 다양한 방법이 있습니다. App Services 이메일/비밀번호 인증에 대해 자세히 알아보고, 활성화하고, 구성합니다.

  1. EmailPasswordAuthProvider 만들기 인스턴스를 App 인수로 사용하여 인스턴스를 생성합니다.

  2. EmailPasswordAuthProvider.registerUser()를 호출합니다. 사용자의 이메일과 비밀번호를 인수로 전달합니다.

EmailPasswordAuthProvider authProvider = EmailPasswordAuthProvider(app);
await authProvider.registerUser("lisa@example.com", "myStr0ngPassw0rd");

참고

사용자를 등록해도 해당 사용자는 로그인되지 않습니다. 사용자는 별도로 로그인해야 합니다.

  1. Credentials.emailPassword() 를 호출하여 이메일/비밀번호 자격 증명을 사용자의 이메일과 비밀번호로

  2. 생성된 자격 증명을 app.logIn 에 전달합니다.

final emailPwCredentials =
Credentials.emailPassword("lisa@example.com", "myStr0ngPassw0rd");
await app.logIn(emailPwCredentials);

새 이메일/비밀번호 사용자를 등록한 후에는 사용자를 자동으로 확인하도록 App Services를 구성하지 않는 한 이메일 주소를 확인해야 합니다.

이메일 주소 확인에 사용자 지정 함수 를 사용하도록 App Services를 구성하는 경우 사용자 지정 함수의 흐름 로직에 따라 사용자 확인을 처리합니다. App Services 백엔드는 사용자가 등록할 때 사용자 지정 함수를 호출합니다.

이메일 을 통한 사용자 확인을 처리하도록 App Services를 구성하는 경우에만 확인 이메일을 보내면 됩니다.

새로 생성된 사용자를 확인하려면 확인 tokentokenIdEmailPasswordAuthProvider.confirmUser() . 이는 사용자가 등록할 때 사용자의 이메일 주소로 전송된 이메일에 포함되어 있습니다.

EmailPasswordAuthProvider authProvider = EmailPasswordAuthProvider(app);
await authProvider.confirmUser(token, tokenId);

참고

Flutter 앱에서 딥링크 사용

SDK는 사용자 확인 이메일을 재전송하거나 사용자 지정 확인을 재시도하는 방법을 제공합니다.

사용자 지정 사용자 확인 함수를 다시 시도하도록 App Services 백 엔드를 구성한 경우 이 사용자 확인 방법을 사용합니다.

확인 함수를 다시 시도하려면 가입에 사용된 이메일을 EmailPasswordAuthProvider.retryCustomConfirmationFunction()에 전달합니다.

EmailPasswordAuthProvider authProvider = EmailPasswordAuthProvider(app);
await authProvider.retryCustomConfirmationFunction("lisa@example.com");

확인 이메일 을 다시 보내도록 App Services 백엔드를 구성한 경우 이 사용자 확인 방법을 사용하세요. 각 URL의 확인 토큰은 30 분 후에 만료됩니다. 사용자가 해당 기간 내에 링크를 따라 확인 및 확인을 하지 않을 경우, 새 확인 이메일을 요청해야 합니다.

확인 이메일을 다시 보내려면 가입에 사용된 이메일을 EmailPasswordAuthProvider.resendUserConfirmation()(으)로 전달하세요.

EmailPasswordAuthProvider authProvider = EmailPasswordAuthProvider(app);
await authProvider.resendUserConfirmation("lisa@example.com");

사용자 비밀번호 재설정은 여러 단계를 거쳐야 합니다.

  1. 클라이언트 앱에서는 사용자가 비밀번호를 재설정할 수 있는 UI를 제공합니다. 그런 다음 App Services App은 이메일을 보내거나 사용자의 신원을 확인하는 사용자 지정 함수를 실행할 수 있습니다.

  2. 사용자 신원을 확인한 후 비밀번호 재설정 요청을 완료할 수 있습니다.

  3. 비밀번호 재설정이 완료된 후, 사용자는 새로운 비밀번호를 사용하여 로그인할 수 있습니다.

이러한 방법 중 앱에서 사용할 방법을 선택하려면 App Services 인증 비밀번호 재설정 동작을 구성합니다.

비밀번호 재설정 함수를 실행 하도록 앱을 구성할 때 EmailPasswordAuthProvider.callResetPasswordFunction() 을 호출할 때 실행되어야 하는 함수를 정의합니다. . 이 함수는 사용자 이름, 비밀번호 및 여러 개의 추가 인수를 사용할 수 있습니다. 이러한 인수를 사용하여 사용자가 비밀번호 재설정을 성공적으로 완료하기 위해 전달해야 하는 보안 질문 답변 또는 기타 과제와 같은 세부 정보를 지정할 수 있습니다.

비밀번호 재설정 흐름을 직접 정의하려는 경우 사용자 지정 비밀번호 재설정 함수를 사용하는 것이 더 나을 수 있습니다. 예를 들어 특정 도메인에서 사용자 지정 비밀번호 재설정 이메일을 보낼 수 있습니다. 또는 이메일 이외의 서비스를 사용하여 사용자의 신원을 확인할 수 있습니다.

App Services 측에서 이 메서드를 호출할 때 실행되는 사용자 지정 비밀번호 재설정 함수를 정의합니다. 이 함수는 세 가지 가능한 상태 중 하나를 반환할 수 있습니다.

  • fail

  • pending

  • success

SDK에서는 fail 상태를 오류로 처리합니다. SDK callResetPasswordFunction() 는 반환 값을 받지 않으므로 pending 또는 success 상태를 클라이언트에 반환하지 않습니다.

사용자가 신원을 확인하기 위해 몇 가지 추가 단계를 수행하도록 하려는 경우 App Services 비밀번호 재설정 함수pending 을 반환할 수 있습니다. 그러나 해당 반환 값은 SDK의 callResetPasswordFunction() 로 전달되지 않으므로 클라이언트 앱은 pending 상태를 처리하는 자체 로직을 구현해야 합니다.

서버 측 함수가 사용자 지정 이메일 제공자를 사용하여 이메일을 보낼 수 있습니다. 또는 SMS를 사용하여 문자 메시지로 사용자의 신원을 확인할 수 있습니다.

App Services 비밀번호 재설정 함수 컨텍스트에서 및 에 액세스할 수 있습니다. App Services 비밀번호 재설정 함수에서 이 정보를 전달하는 경우 플랫폼별 딥링킹 또는 유니버설 링크를 사용하여 이러한 값을 앱에 다시 전달할 수 있습니다.token tokenId 그런 다음 클라이언트 애플리케이션은 EmailPasswordAuthProvider.completeResetPassword 를 호출할 수 있습니다. 비밀번호 재설정 절차를 완료합니다.

// The password reset function takes any number of
// arguments.
final args = [];
EmailPasswordAuthProvider authProvider = EmailPasswordAuthProvider(app);
await authProvider.callResetPasswordFunction(
"lisa@example.com", "n3wSt0ngP4ssw0rd!",
functionArgs: args);
// ... Later...
// Token and tokenId are parameters you can access
// in the App Services function context. You could send
// this to the user via email, SMS, or some other method.
final token = "someToken";
final tokenId = "someTokenId";
await authProvider.completeResetPassword(
"n3wSt0ngP4ssw0rd!", token, tokenId);

App Services 비밀번호 재설정 함수 가 함수 내에서 추가 유효성 검사를 수행하거나 비밀번호 재설정을 시도하기 전에 사용자 ID의 유효성을 검사한 경우 success 을 반환하도록 App Services 함수를 구성할 수 있습니다. 그러나 해당 반환 값은 SDK의 callResetPasswordFunction() 로 전달되지 않으므로 클라이언트 앱은 success 상태를 처리하는 자체 로직을 구현해야 합니다.

이 예제의 함수를 호출하면 전체 비밀번호 재설정 프로세스가 수행됩니다.

// The password reset function takes any number of
// arguments. You might ask the user to provide answers to
// security questions, for example, to verify the user
// should be able to complete the password reset.
final args = [
"Snowball II",
"Springfield Elementary School",
"Bouvier"
];
EmailPasswordAuthProvider authProvider = EmailPasswordAuthProvider(app);
await authProvider.callResetPasswordFunction(
"lisa@example.com", "n3wSt0ngP4ssw0rd!",
functionArgs: args);

사용자의 신원을 확인하기 위해 비밀번호 재설정 이메일을 보내려면 비밀번호 재설정 이메일을 보내도록 앱을 구성해야 합니다.

비밀번호 재설정 이메일을 보내려면 가입에 사용된 이메일을 EmailPasswordAuthProvider.resetPassword()에 전달합니다.

EmailPasswordAuthProvider authProvider = EmailPasswordAuthProvider(app);
await authProvider.resetPassword("lisa@example.com");

비밀번호 재설정 이메일에는token 및 두 값으로 인코딩된 URL이 포함되어 tokenId 있습니다. 비밀번호 재설정 절차를 완료하려면 클라이언트에서 또는 백엔드에서 사용자 지정 함수를 호출하여 사용자 비밀번호를 재설정하면 됩니다. SDK를 사용하여 비밀번호 재설정을 완료하려면 이 값을 EmailPasswordAuthProvider.completeResetPassword()에 전달합니다.

사용자가 30분 이내에 비밀번호 재설정 이메일에 포함된 URL을 방문하지 않으면 tokentokenId 이(가) 만료됩니다. 비밀번호 재설정 프로세스를 다시 시작해야 합니다.

EmailPasswordAuthProvider authProvider = EmailPasswordAuthProvider(app);
await authProvider.completeResetPassword(
"n3wSt0ngP4ssw0rd!", token, tokenId);

참고

비밀번호 재설정 이메일로 전송된 token 및 값에 액세스하려면 tokenId 딥 링크 가 포함된 사용자 지정 비밀번호 재설정 이메일 을 사용할 수 있습니다.

← 사용자 인증 - Flutter SDK