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