비밀번호 재설정이나 사용자 이메일 인증을 위한 이메일 작업을 보낼 때 연결 URL을 통해 상태를 전달할 수 있습니다. 그러면 작업이 완료된 후 사용자가 앱으로 돌아갈 수 있습니다. 또한 모바일 애플리케이션이 설치된 경우 이메일 작업 링크를 웹페이지 대신 모바일 애플리케이션에서 직접 처리할지 여부를 지정할 수도 있습니다
이 기능은 다음과 같은 시나리오에서 매우 유용합니다.
현재 로그인하지 않은 사용자가 로그인이 필요한 콘텐츠에 액세스하려고 시도합니다. 하지만 사용자가 비밀번호를 잊어버려 비밀번호 재설정 흐름을 트리거합니다. 이 흐름이 완료되면 사용자는 액세스하려고 했던 앱 섹션으로 돌아가기를 기대합니다.
애플리케이션에서는 인증된 계정에만 액세스를 제공합니다. 예를 들어 뉴스레터를 구독하려면 먼저 사용자의 이메일 인증이 필요합니다. 사용자는 이메일 인증 흐름을 거친 다음 앱으로 돌아가 구독을 완료할 수 있기를 기대합니다.
사용자가 휴대기기에서 흐름을 시작해 인증 후 브라우저가 아닌 모바일 앱으로 돌아가기를 기대합니다.
연결 URL을 통한 상태 전달은 Firebase 인증이 제공하는 강력한 기능으로 사용자 환경을 크게 개선할 수 있습니다.
이메일 작업에서 연결 URL의 상태 전달
연결 URL을 안전하게 전달하려면 Firebase 콘솔에서 이 URL의 도메인을 승인된 도메인으로 추가해야 합니다. 아직 허용 목록에 포함되어 있지 않다면 인증 섹션에서 로그인 방법 탭의 승인된 도메인 목록에 도메인을 추가하면 됩니다.
비밀번호 재설정 이메일이나 확인 메일을 보낼 때 firebase.auth.ActionCodeSettings
인스턴스를 제공해야 합니다. 이 인터페이스는 다음과 같은 매개변수를 사용합니다.
매개변수 | 유형 | 설명 |
---|---|---|
url |
문자열 | 컨텍스트에 따라 다른 의미를 가지는 링크(상태/연결 URL)를 설정합니다.
|
iOS |
({bundleId: string}|undefined) | Firebase Authentication이 Apple 기기에서 열리는 웹 전용 링크 또는 모바일 링크를 만들어야 하는지 결정하는 데 도움이 됩니다. |
android |
({packageName: string, installApp:boolean|undefined, minimumVersion: string|undefined}|undefined) | Firebase Authentication이 Android 기기에서 열리는 웹 전용 링크 또는 모바일 링크를 만들어야 하는지 결정하는 데 도움이 됩니다. |
handleCodeInApp |
(boolean|undefined) | 이메일 작업 링크를 모바일 앱과 웹 링크 중 어디에서 먼저 열지 지정합니다. 기본값은 false입니다. true로 설정하면 작업 코드 링크가 범용 링크 또는 Android 앱 링크로 전송되고 앱이 설치된 경우 앱에서 열립니다. false이면 코드가 먼저 웹 위젯에 전송되고 앱이 설치된 경우 계속해서 앱으로 리디렉션됩니다. |
linkDomain |
(string|undefined) | 프로젝트에 대해 커스텀 Hosting 링크 도메인이 정의된 경우 지정된 모바일 앱에서 링크를 열 때 사용할 도메인을 지정합니다. 그러지 않으면 기본 도메인이 자동으로 선택됩니다(예: PROJECT_ID.firebaseapp.com |
dynamicLinkDomain |
(string|undefined) | 지원 중단되었습니다. 이 파라미터를 지정하지 마세요. |
다음 예시에서는 커스텀 Hosting 도메인 custom-domain.com
을 사용하여 모바일 앱에서 먼저 열리는 이메일 인증 링크를 보내는 방법을 보여줍니다. 딥 링크에는 연결 URL 페이로드(https://www.example.com/?email=user@example.com
)가 포함됩니다.
const actionCodeSettings = {
url: 'https://www.example.com/?email=' + firebase.auth().currentUser.email,
iOS: {
bundleId: 'com.example.ios'
},
android: {
packageName: 'com.example.android',
},
handleCodeInApp: true,
// Specify a custom Hosting link domain to use. The domain must be
// configured in Firebase Hosting and owned by the project.
linkDomain: "custom-domain.com"
};
firebase.auth().currentUser.sendEmailVerification(actionCodeSettings)
.then(function() {
// Verification email sent.
})
.catch(function(error) {
// Error occurred. Inspect error.code.
});
Firebase Hosting 링크 구성
Firebase Authentication은 모바일 애플리케이션에서 열릴 링크를 보낼 때 Firebase Hosting을 사용합니다. 이 기능을 사용하려면 Firebase Console에서 호스팅 링크를 구성해야 합니다.
Android 애플리케이션을 구성합니다.
- Android 애플리케이션에서 이 링크를 처리하려면 Firebase Console 프로젝트 설정에서 앱의 패키지 이름을 지정해야 합니다. 또한 애플리케이션 인증서의 SHA-1 및 SHA-256을 제공해야 합니다.
- 또한
AndroidManifest.xml
파일의 딥 링크에 대한 인텐트 필터도 구성해야 합니다. - 자세한 내용은 Android 동적 링크 수신 안내를 참조하세요.
iOS 애플리케이션을 구성합니다.
- iOS 애플리케이션에서 이러한 링크를 처리하려면 애플리케이션 기능에서 Hosting 링크 도메인을 연결된 도메인으로 구성해야 합니다.
- 자세한 내용은 iOS 호스팅 링크 수신 안내를 참조하세요.
웹 애플리케이션의 이메일 작업 처리
모바일 애플리케이션을 사용할 수 있는 경우 먼저 웹 애플리케이션의
작업 코드 링크를 처리하고 정상적으로 완료된 후 다른 웹페이지 또는
모바일 애플리케이션으로 리디렉션할지 여부를 지정할 수 있습니다.
firebase.auth.ActionCodeSettings
객체에서 handleCodeInApp
을 false
로 설정하면 됩니다. iOS 번들 ID 또는 Android 패키지 이름은
필수 항목이 아니지만 제공할 경우 이메일 작업 코드 완료 시 사용자가 지정된 앱으로 다시 리디렉션될 수 있습니다.
여기에 사용된 웹 URL은 이메일 작업 템플릿 섹션에서 구성된 URL입니다. 모든 프로젝트에 기본 URL이 프로비저닝됩니다. 이메일 작업 핸들러의 맞춤설정에 대한 자세한 내용은 이메일 핸들러 맞춤설정을 참조하세요.
이 경우 continueUrl
쿼리 파라미터의 링크는 페이로드가 ActionCodeSettings
객체에 지정된 URL
인 호스팅 링크가 됩니다.
이메일 인증과 같은 이메일 작업을 처리할 때는 oobCode
쿼리 매개변수의 작업 코드를 딥 링크에서 파싱한 다음 applyActionCode
를 통해 변경사항이 적용되도록 합니다(즉, 이메일 인증).
모바일 애플리케이션에서 이메일 작업 처리
모바일 애플리케이션이 설치된 경우 먼저 모바일 애플리케이션의 작업 코드 링크를 처리할지
여부를 지정할 수 있습니다. 모바일 애플리케이션을 지원하지 않는 기기에서 링크를 클릭하면 대신 웹페이지에서 링크가 열립니다. firebase.auth.ActionCodeSettings
객체에서 handleCodeInApp
을 true
로 설정하면 됩니다. 모바일 애플리케이션 Android 패키지 이름 또는 iOS 번들 ID도 지정해야 합니다.
사용할 수 있는 모바일 앱이 없을 때 여기에 사용되는 대체 웹 URL은 이메일 작업 템플릿 섹션에서 구성된 URL입니다. 모든 프로젝트에 기본 URL이 프로비저닝됩니다. 이메일 작업 핸들러의 맞춤설정에 대한 자세한 내용은 이메일 핸들러 맞춤설정을 참조하세요.
이 경우 사용자에게 전송되는 모바일 앱 링크는 페이로드가 Console에서 쿼리 파라미터 oobCode
, mode
, apiKey
, continueUrl
을 사용해 구성된 작업 코드 URL인 Hosting 링크입니다. 후자는 ActionCodeSettings
객체에 지정된 원래의 URL
입니다. 이메일 핸들러 맞춤설정 섹션에 설명된 웹 흐름에서 처리하는 방식과 유사한 방법으로 모바일 애플리케이션에서 작업 코드를 직접 적용할 수 있습니다.
이메일 인증과 같은 이메일 작업을 처리할 때는 oobCode
쿼리 매개변수의 작업 코드를 딥 링크에서 파싱한 다음 applyActionCode
를 통해 변경사항이 적용되도록 합니다(즉, 이메일 인증).