이메일 작업의 상태 전달

비밀번호 재설정이나 사용자 이메일 확인을 위한 이메일 작업을 보낼 때 연결 URL을 통해 상태를 전달할 수 있습니다. 그러면 사용자가 작업을 완료한 후에 앱으로 돌아갈 수 있습니다. 또한 웹페이지 대신 설치되는 모바일 애플리케이션에서 이메일 작업 링크를 직접 처리할지 지정할 수도 있습니다.

이 기능은 다음과 같은 시나리오에서 매우 유용합니다.

  • 현재 로그인하지 않은 사용자가 로그인이 필요한 콘텐츠에 액세스하려고 시도합니다. 하지만 사용자가 비밀번호를 잊어버려 비밀번호 재설정 흐름이 트리거됩니다. 이 흐름이 완료되면 사용자는 액세스하려고 했던 앱 섹션으로 돌아가기를 기대합니다.

  • 애플리케이션에서 인증된 계정에만 액세스를 제공합니다. 예를 들어 뉴스레터 앱을 구독하려면 먼저 사용자의 이메일 확인이 필요합니다. 사용자는 이메일 확인 흐름을 거치고 앱으로 돌아가 구독을 완료할 수 있기를 기대합니다.

  • 보통은 사용자가 iOS 앱에서 비밀번호 재설정 또는 이메일 확인 흐름을 시작하면 앱 내에서 흐름이 완료되기를 기대합니다. 연결 URL을 통해 상태를 전달하는 기능을 사용하면 이와 같이 처리할 수 있습니다.

연결 URL을 통한 상태 전달은 Firebase 인증이 제공하는 강력한 기능으로 사용자 환경을 크게 개선할 수 있습니다.

이메일 작업의 상태/연결 URL 전달

연결 URL을 안전하게 전달하려면 Firebase 콘솔에서 이 URL의 도메인을 허용해야 합니다. 아직 허용 목록에 포함되어 있지 않다면 인증 섹션에서 로그인 방법 탭의 승인된 도메인 목록에 도메인을 추가하면 됩니다.

비밀번호 재설정 이메일이나 확인 메일을 보낼 때 FIRActionCodeSettings 인스턴스를 제공해야 합니다. 이 인터페이스는 다음과 같은 매개변수를 사용합니다.

Swift

매개변수 유형 설명
URL 문자열

컨텍스트에 따라 의미가 다른 링크(상태/연결 URL)를 설정합니다.

  • 웹 작업 위젯에서 링크가 처리되는 경우 continueUrl 쿼리 매개변수의 딥 링크입니다.
  • 앱에서 링크가 직접 처리되는 경우 동적 링크의 딥 링크에 있는 continueUrl 쿼리 매개변수입니다.
iOSBundleID 문자열 iOS 번들 ID를 설정합니다. iOS 앱이 설치되어 있다면 앱의 링크를 열려고 시도할 것입니다. iOS 앱을 콘솔에 등록해야 합니다. 번들 ID를 제공하지 않으면 이 필드의 값이 앱의 기본 번들 ID로 설정됩니다.
androidPackageName 문자열 Android 패키지 이름을 설정합니다. Android 앱이 설치되어 있다면 앱의 링크를 열려고 시도할 것입니다.
androidInstallIfNotAvailable Bool 기기에서 앱을 지원하며 앱이 아직 설치되지 않은 경우 앱을 설치할지 여부를 지정합니다. 이 필드가 packageName 없이 제공되면 필드와 함께 packageName을 제공해야 한다는 오류가 발생합니다.
androidMinimumVersion 문자열 이 흐름에서 지원되는 앱의 최소 버전입니다. minimumVersion이 지정되고 이전 버전의 앱이 설치된 경우 앱을 업그레이드하도록 사용자가 Play 스토어로 이동됩니다. Android 앱을 콘솔에 등록해야 합니다.
handleCodeInApp Bool 이메일 작업 링크를 모바일 앱과 웹 링크 중 어디에서 먼저 열지 지정합니다. 기본값은 false입니다. true로 설정하면 작업 코드 링크가 범용 링크 또는 Android 앱 링크로 전송되고 앱이 설치된 경우 앱에서 열립니다. false 사례의 경우 코드가 먼 웹 위젯에 전송되고 앱이 설치된 경우 계속해서 앱으로 리디렉션됩니다.

Objective-C

매개변수 유형 설명
URL NSString

컨텍스트에 따라 의미가 다른 링크(상태/연결 URL)를 설정합니다.

  • 웹 작업 위젯에서 링크가 처리되는 경우 continueUrl 쿼리 매개변수의 딥 링크입니다.
  • 앱에서 링크가 직접 처리되는 경우 동적 링크의 딥 링크에 있는 continueUrl 쿼리 매개변수입니다.
iOSBundleID NSString iOS 번들 ID를 설정합니다. iOS 앱이 설치되어 있다면 앱의 링크를 열려고 시도할 것입니다. iOS 앱을 콘솔에 등록해야 합니다.
androidPackageName NSString Android 패키지 이름을 설정합니다. Android 앱이 설치되어 있다면 앱의 링크를 열려고 시도할 것입니다.
androidInstallIfNotAvailable BOOL 기기에서 지원하는 Android 앱인데 아직 설치되지 않았다면 설치 여부를 지정합니다. 이 필드가 packageName 없이 제공되면 필드와 함께 packageName을 제공해야 한다는 오류가 발생합니다.
androidMinimumVersion NSString 이 흐름에서 지원되는 앱의 최소 버전입니다. minimumVersion이 지정되고 이전 버전의 앱이 설치된 경우 앱을 업그레이드하도록 사용자가 Play 스토어로 이동됩니다. Android 앱을 콘솔에 등록해야 합니다.
handleCodeInApp BOOL 이메일 작업 링크를 모바일 앱과 웹 링크 중 어디에서 먼저 열지 지정합니다. 기본값은 false입니다. true로 설정하면 작업 코드 링크가 범용 링크 또는 Android 앱 링크로 전송되고 앱이 설치된 경우 앱에서 열립니다. false이면 코드가 먼 웹 위젯에 전송되고 앱이 설치된 경우 계속해서 앱으로 리디렉션됩니다.

다음 예에서는 먼저 모바일 앱에서 열리는 이메일 확인 링크를 Firebase 동적 링크로 보내는 방법을 보여줍니다(앱이 아직 설치되지 않은 상태이고 최소 버전이 com.example.ios인 경우 앱이 설치되는 iOS 앱 com.example.android 또는 Android 앱12). 딥 링크에는 연결 URL 페이로드가 포함됩니다. https://www.example.com/?email=user@example.com

Swift


var actionCodeSettings =  ActionCodeSettings.init()
actionCodeSettings.canHandleInApp = true
let user = Auth.auth().currentUser()
actionCodeSettings.URL =
    String(format: "https://www.example.com/?email=%@", user.email)
actionCodeSettings.iOSbundleID = Bundle.main.bundleIdentifier!
actionCodeSettings.setAndroidPakageName("com.example.android",
                                         installIfNotAvailable:true,
                                         minumumVersion:"12")
user.sendEmailVerification(withActionCodeSettings:actionCodeSettings { error in
  if error {
    // Error occurred. Inspect error.code and handle error.
    return
  }
  // Email verification sent.
})

Objective-C

 FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init];
 actionCodeSettings.handleCodeInApp = YES;
 FIRUser *user = [FIRAuth auth].currentUser;
 NSString *urlString =
     [NSString stringWithFormat:@"https://www.example.com/?email=%@", user.email];
 actionCodeSettings.URL = [NSURL URLWithString:urlString];
 actionCodeSettings.iOSBundleID = [NSBundle mainBundle].bundleIdentifier;
 [actionCodeSettings setAndroidPackageName:@"com.example.android"
                     installIfNotAvailable:YES
                            minimumVersion:'12'];
 [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings
                                        completion:^(NSError *_Nullable error) {
   if (error) {
     // Error occurred. Inspect error.code and handle error.
     return;
   }
   // Email verification sent.
 }];

Firebase 인증은 모바일 애플리케이션에서 열릴 링크를 보낼 때 Firebase 동적 링크를 사용합니다. 이 기능을 사용하려면 Firebase 콘솔에서 동적 링크를 구성해야 합니다.

  1. Firebase 동적 링크를 사용 설정합니다.

    1. Firebase 콘솔에서 동적 링크 섹션을 엽니다.
    2. 동적 링크 약관에 아직 동의하지 않았으며 동적 링크 도메인도 만들지 않았다면 지금 동의하고 만듭니다.

      동적 링크 도메인을 이미 만들었다면 기록해 둡니다. 동적 링크 도메인의 형식은 일반적으로 다음 예와 같습니다.

      example.page.link

      수신 링크를 가로채도록 Android 또는 iOS 앱을 구성할 때 이 값이 필요합니다.

  2. Android 애플리케이션을 구성합니다.

    1. Android 애플리케이션에서 이 링크를 처리하려면 Firebase 콘솔 프로젝트 설정에서 Android 패키지 이름을 지정해야 합니다. 또한 애플리케이션 인증서의 SHA-1 및 SHA-256을 제공해야 합니다.
    2. AndroidManifest.xml 파일의 딥 링크에 대한 인텐트 필터도 구성해야 합니다.
    3. 자세한 내용은 Android 동적 링크 수신 안내를 참조하세요.
  3. iOS 애플리케이션을 구성합니다.

    1. iOS 애플리케이션에서 이 링크를 처리하려면 Firebase 콘솔 프로젝트 설정에서 iOS 번들 ID를 지정해야 합니다. 앱 스토어 ID와 Apple 개발자팀 ID도 지정해야 합니다.
    2. 또한 애플리케이션 기능에서 FDL 범용 링크 도메인을 연결된 도메인으로 구성해야 합니다.
    3. iOS 버전 8 이하에 애플리케이션을 배포하려면 iOS 번들 ID를 수신 URL의 맞춤 스키마로 설정해야 합니다.
    4. 자세한 내용은 iOS 동적 링크 수신 안내를 참조하세요.

웹 애플리케이션의 이메일 작업 처리

모바일 애플리케이션을 사용할 수 있는 경우 먼저 웹 애플리케이션의 작업 코드 링크를 처리하고 정상적으로 완료된 후 다른 웹페이지 또는 모바일 애플리케이션으로 리디렉션할지 여부를 지정할 수 있습니다. 이는 FIRActionCodeSettings(Obj-C) 또는 ActionCodeSettings(Swift) 개체에서 handleCodeInAppfalse로 설정하면 처리됩니다. iOS 번들 ID 또는 Android 패키지 이름은 필수 항목이 아니지만 제공할 경우 이메일 작업 코드 완료 시 사용자가 지정된 앱으로 다시 리디렉션될 수 있습니다.

여기에 사용된 웹 URL은 이메일 작업 템플릿 섹션에서 구성된 URL입니다. 모든 프로젝트에 기본 URL이 프로비저닝됩니다. 이메일 작업 핸들러의 맞춤설정에 대한 자세한 내용은 이메일 핸들러 맞춤설정을 참조하세요.

이 경우 continueURL 쿼리 매개변수의 링크는 페이로드가 URL 개체에 지정된 ActionCodeSettings인 FDL 링크가 됩니다. 추가 종속성 없이 앱의 수신 링크를 가로채 처리할 수 있지만 FDL 클라이언트 라이브러리를 사용해 딥 링크를 구문 분석하는 것이 좋습니다.

모바일 애플리케이션의 이메일 작업 처리

애플리케이션이 설치된 경우 먼저 모바일 애플리케이션의 작업 코드 링크를 처리할지 여부를 지정할 수 있습니다. Android 애플리케이션을 사용하면 androidInstallIfNotAvailable을 통해 기기에서 지원하는 앱이지만 아직 설치되지 않은 경우 앱을 설치하도록 지정할 수 있습니다. 모바일 애플리케이션을 지원하지 않는 기기에서 링크를 클릭하면 해당 링크가 대신 웹페이지에서 열립니다. 이는 FIRActionCodeSettings(Obj-C) 또는 ActionCodeSettings(Swift) 개체에서 handleCodeInApptrue로 설정하면 처리됩니다. 모바일 애플리케이션 Android 패키지 이름 또는 iOS 번들 ID도 지정해야 합니다.사용할 수 있는 모바일 앱이 없을 때 여기에 사용되는 대체 웹 URL은 이메일 작업 템플릿 섹션에서 구성된 URL입니다. 모든 프로젝트에 기본 URL이 프로비저닝됩니다. 이메일 작업 핸들러의 맞춤설정에 대한 자세한 내용은 이메일 핸들러 맞춤설정을 참조하세요.

이 경우 사용자에게 전송되는 모바일 앱 링크는 페이로드가 콘솔에서 검색어 매개변수 oobCode, mode, apiKey, continueUrl을 사용해 구성된 작업 코드 URL인 FDL 링크입니다. 후자는 FIRActionCodeSettings(Obj-C) 또는 ActionCodeSettings(Swift) 개체에 지정된 원래 URL입니다. 추가 종속성 없이 앱의 수신 링크를 가로채 처리할 수 있지만 FDL 클라이언트 라이브러리를 사용해 딥 링크를 구문 분석하는 것이 좋습니다. 이메일 핸들러 맞춤설정 섹션에서 설명한 웹 흐름에서 처리하는 방식과 유사한 방법으로 모바일 애플리케이션에서 작업 코드를 직접 적용할 수 있습니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.