Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기

이메일 작업에서 상태 전달

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

비밀번호 재설정을 위한 이메일 작업을 보내거나 사용자 이메일을 확인할 때 계속 URL을 통해 상태를 전달할 수 있습니다. 이를 통해 사용자는 작업이 완료된 후 앱으로 돌아갈 수 있습니다. 또한 웹 페이지가 아닌 모바일 애플리케이션이 설치된 경우 이메일 작업 링크를 직접 처리할지 여부를 지정할 수 있습니다.

이는 다음과 같은 일반적인 시나리오에서 매우 유용할 수 있습니다.

  • 현재 로그인하지 않은 사용자가 로그인이 필요한 콘텐츠에 액세스하려고 할 수 있습니다. 그러나 사용자가 비밀번호를 잊어버려 비밀번호 재설정 흐름을 트리거할 수 있습니다. 흐름이 끝나면 사용자는 액세스하려는 앱 섹션으로 돌아갈 것으로 예상합니다.

  • 애플리케이션은 확인된 계정에만 액세스 권한을 제공할 수 있습니다. 예를 들어 뉴스레터는 사용자가 구독하기 전에 이메일을 확인하도록 요구할 수 있습니다. 사용자는 이메일 확인 절차를 거쳐 앱으로 돌아가 구독을 완료할 것으로 예상합니다.

  • 다른 경우에는 사용자가 모바일 장치에서 흐름을 시작하고 확인 후 브라우저 대신 모바일 앱으로 돌아갈 것으로 예상할 수 있습니다.

계속 URL을 통해 상태를 전달할 수 있는 기능은 Firebase 인증이 제공하는 강력한 기능이며 사용자 경험을 크게 향상시킬 수 있습니다.

이메일 작업에서 상태/계속 URL 전달

계속 URL을 안전하게 전달하려면 Firebase 콘솔 에서 URL의 도메인을 승인된 도메인으로 추가해야 합니다. 인증 섹션에서 이 도메인을 아직 없는 경우 로그인 방법 탭 아래의 인증된 도메인 목록에 추가하여 이 작업을 수행합니다.

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

매개변수 유형 설명
url

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

  • 웹 액션 위젯에서 링크가 처리될 때 이것은 continueUrl 쿼리 매개변수의 딥 링크입니다.
  • 링크가 앱에서 직접 처리되는 경우 동적 링크의 딥 링크에 있는 continueUrl 쿼리 매개변수입니다.
iOS ({번들 ID: 문자열}|정의되지 않음) iOS 번들 ID를 설정합니다. iOS 앱이 설치된 경우 링크를 열려고 시도합니다. iOS 앱은 콘솔에 등록해야 합니다.
android ({패키지 이름: 문자열, installApp:부울|정의되지 않음, 최소 버전: 문자열|정의되지 않음}|정의되지 않음) Android 패키지 이름을 설정합니다. Android 앱이 설치된 경우 링크를 열려고 시도합니다. installApp 이 전달되면 기기가 Android 앱을 지원하고 앱이 아직 설치되지 않은 경우 Android 앱을 설치할지 여부를 지정합니다. 이 필드가 packageName 없이 제공되면 packageName 이 이 필드와 함께 제공되어야 함을 설명하는 오류가 발생합니다. minimumVersion 이 지정되고 이전 버전의 앱이 설치된 경우 사용자는 앱을 업그레이드하기 위해 Play 스토어로 이동합니다. Android 앱은 콘솔에 등록해야 합니다.
handleCodeInApp (부울|정의되지 않음) 이메일 작업 링크가 모바일 앱에서 먼저 열릴지 아니면 웹 링크에서 먼저 열릴지 여부입니다. 기본값은 false입니다. true로 설정하면 액션 코드 링크가 유니버설 링크 또는 Android 앱 링크로 전송되고 앱이 설치된 경우 앱에서 열립니다. false의 경우 코드가 먼저 웹 위젯으로 전송된 다음 계속할 때 앱이 설치된 경우 앱으로 리디렉션됩니다.
dynamicLinkDomain (문자열|정의되지 않음) Firebase 동적 링크를 사용하여 열려면 현재 링크에 사용할 동적 링크 도메인(또는 하위 도메인)을 설정합니다. 프로젝트당 여러 개의 동적 링크 도메인을 구성할 수 있으므로 이 필드는 명시적으로 하나를 선택할 수 있는 기능을 제공합니다. 아무 것도 제공하지 않으면 기본적으로 첫 번째 도메인이 사용됩니다.

다음 예에서는 사용자 지정 동적 링크 도메인 example.page.link (iOS 앱 com.example.ios 또는 Android 앱 com.example.android 아직 설치되지 않았고 최소 버전이 12 인 경우 앱이 설치될 com.example.android 입니다. 딥 링크에는 계속 URL 페이로드 https://www.example.com/?email=user@example.com 이 포함됩니다.

var actionCodeSettings = {
  url: 'https://www.example.com/?email=' + firebase.auth().currentUser.email,
  iOS: {
    bundleId: 'com.example.ios'
  },
  android: {
    packageName: 'com.example.android',
    installApp: true,
    minimumVersion: '12'
  },
  handleCodeInApp: true,
  // When multiple custom dynamic link domains are defined, specify which
  // one to use.
  dynamicLinkDomain: "example.page.link"
};
firebase.auth().currentUser.sendEmailVerification(actionCodeSettings)
  .then(function() {
    // Verification email sent.
  })
  .catch(function(error) {
    // Error occurred. Inspect error.code.
  });

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

  1. Firebase 동적 링크 활성화:

    1. Firebase 콘솔 에서 동적 링크 섹션을 엽니다.
    2. 아직 동적 링크 약관에 동의하지 않고 동적 링크 도메인을 생성하지 않았다면 지금 수락하십시오.

      동적 링크 도메인을 이미 생성했다면 기록해 두십시오. 동적 링크 도메인은 일반적으로 다음 예와 같습니다.

      example.page.link

      들어오는 링크를 가로채도록 Apple 또는 Android 앱을 구성할 때 이 값이 필요합니다.

  2. Android 애플리케이션 구성:

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

    1. iOS 애플리케이션에서 이러한 링크를 처리하려면 Firebase 콘솔 프로젝트 설정에서 iOS 번들 ID를 지정해야 합니다. 또한 App Store ID와 Apple 개발자 팀 ID도 지정해야 합니다.
    2. 또한 응용 프로그램 기능에서 FDL 범용 링크 도메인을 연결된 도메인으로 구성해야 합니다.
    3. 애플리케이션을 iOS 버전 8 이하로 배포하려는 경우 iOS 번들 ID를 수신 URL에 대한 사용자 지정 체계로 설정해야 합니다.
    4. 이에 대한 자세한 내용은 iOS 동적 링크 수신 지침 을 참조하십시오.

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

모바일 응용 프로그램을 사용할 수 있는 경우 웹 응용 프로그램에서 작업 코드 링크를 먼저 처리한 다음 성공적으로 완료된 후 다른 웹 페이지 또는 모바일 응용 프로그램으로 리디렉션할지 여부를 지정할 수 있습니다. firebase.auth.ActionCodeSettings 객체에서 handleCodeInAppfalse 로 설정하면 됩니다. iOS 번들 ID 또는 Android 패키지 이름은 필요하지 않지만 제공하면 사용자가 이메일 작업 코드 완료 시 지정된 앱으로 다시 리디렉션할 수 있습니다.

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

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

이메일 확인과 같은 이메일 작업을 처리할 때 oobCode 쿼리 매개변수의 작업 코드를 딥 링크에서 구문 분석한 다음 applyActionCode 를 통해 적용해야 변경 사항(예: 이메일 확인)이 적용됩니다.

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

모바일 애플리케이션이 설치된 경우 먼저 모바일 애플리케이션 내에서 작업 코드 링크를 처리할지 여부를 지정할 수 있습니다. Android 애플리케이션을 사용하면 android.installApp 을 통해 기기가 지원하지만 아직 설치되지 않은 경우 앱이 설치되도록 지정할 수도 있습니다. 모바일 애플리케이션을 지원하지 않는 장치에서 링크를 클릭하면 대신 웹 페이지에서 링크가 열립니다. firebase.auth.ActionCodeSettings 개체에서 handleCodeInApptrue 로 설정하면 됩니다. 모바일 애플리케이션의 Android 패키지 이름 또는 iOS 번들 ID도 지정해야 합니다.

모바일 앱을 사용할 수 없는 경우 여기에 사용되는 대체 웹 URL은 이메일 작업 템플릿 섹션에서 구성된 URL입니다. 기본 프로젝트는 모든 프로젝트에 프로비저닝됩니다. 이메일 작업 핸들러를 사용자 정의하는 방법에 대한 자세한 내용은 이메일 핸들러 사용자 정의 를 참조하십시오.

이 경우 사용자에게 전송되는 모바일 앱 링크는 페이로드가 oobCode , mode , apiKeycontinueUrl 쿼리 매개변수를 사용하여 콘솔에서 구성된 작업 코드 URL인 FDL 링크가 됩니다. 후자는 ActionCodeSettings 개체에 지정된 원래 URL 이 됩니다. 추가 종속성 없이 앱에서 들어오는 링크를 가로채고 처리할 수 있지만 FDL 클라이언트 라이브러리를 사용하여 딥 링크를 구문 분석하는 것이 좋습니다. 작업 코드는 이메일 처리기 사용자 지정 섹션에 설명된 웹 흐름에서 처리되는 방식과 유사하게 모바일 애플리케이션에서 직접 적용할 수 있습니다.

이메일 확인과 같은 이메일 작업을 처리할 때 oobCode 쿼리 매개변수의 작업 코드를 딥 링크에서 구문 분석한 다음 applyActionCode 를 통해 적용해야 변경 사항(예: 이메일 확인)이 적용됩니다.