Вы можете передать состояние через URL-адрес продолжения при отправке действий по электронной почте для сброса пароля или проверки электронной почты пользователя. Это дает пользователю возможность вернуться в приложение после завершения действия. Кроме того, вы можете указать, следует ли обрабатывать ссылку на действие по электронной почте непосредственно из мобильного приложения, когда оно установлено вместо веб-страницы.
Это может быть чрезвычайно полезно в следующих распространенных сценариях:
Пользователь, не вошедший в систему в данный момент, может пытаться получить доступ к содержимому, требующему входа пользователя в систему. Однако пользователь мог забыть свой пароль и, следовательно, запустить поток сброса пароля. В конце потока пользователь ожидает вернуться в раздел приложения, к которому он пытался получить доступ.
Приложение может предлагать доступ только к проверенным учетным записям. Например, приложение информационного бюллетеня может потребовать от пользователя подтвердить адрес электронной почты перед подпиской. Пользователь пройдет процедуру проверки электронной почты и ожидает, что его вернут в приложение для завершения подписки.
Как правило, когда пользователь начинает процесс сброса пароля или проверки электронной почты в приложении Apple, он ожидает завершения процесса внутри приложения; возможность передавать состояние через URL-адрес продолжения делает это возможным.
Возможность передавать состояние через URL-адрес продолжения — это мощная функция, предоставляемая Firebase Auth, которая может значительно улучшить взаимодействие с пользователем.
Передача состояния URL-адреса продолжения в действиях по электронной почте
Чтобы безопасно передать URL-адрес продолжения, домен URL-адреса должен быть внесен в белый список в консоли Firebase . Это делается в разделе «Аутентификация» путем добавления этого домена в список Авторизованных доменов на вкладке «Метод входа», если его там еще нет.
Экземпляр FIRActionCodeSettings
необходимо предоставить при отправке электронного письма для сброса пароля или электронного письма с подтверждением. Этот интерфейс принимает следующие параметры:
Быстрый
Параметр | Тип | Описание |
---|---|---|
URL | Нить | Устанавливает ссылку (URL-адрес состояния/продолжения), которая имеет разные значения в разных контекстах:
|
iOSBundleID | Нить | Устанавливает идентификатор пакета iOS, чтобы помочь Firebase Authentication определить, следует ли создавать ссылку только для Интернета или для мобильных устройств, которая открывается на устройстве Apple. |
androidPackageName | Нить | Задает имя пакета Android, чтобы помочь Firebase Authentication определить, следует ли создавать ссылку только для Интернета или для мобильных устройств, которая открывается на устройстве Android. |
handleCodeInApp | Бул | Будет ли ссылка на действие по электронной почте сначала открыта в мобильном приложении или по веб-ссылке. По умолчанию — ложь. Если установлено значение true, ссылка на код действия будет отправлена как универсальная ссылка или ссылка на приложение Android и будет открыта приложением, если оно установлено. В противном случае код сначала будет отправлен в веб-виджет, а затем при продолжении будет перенаправлено в приложение, если оно установлено. |
linkDomain | Нить | Если для проекта определены пользовательские домены ссылок на хостинг, укажите, какой из них использовать, когда ссылка должна открываться указанным мобильным приложением. В противном случае автоматически выбирается домен по умолчанию (например,PROJECT_ID .firebaseapp.com ). |
dynamicLinkDomain | Нить | Устарело. Не указывайте этот параметр. |
Цель-C
Параметр | Тип | Описание |
---|---|---|
URL | НСстринг | Устанавливает ссылку (URL-адрес состояния/продолжения), которая имеет разные значения в разных контекстах:
|
iOSBundleID | НСстринг | Устанавливает идентификатор пакета iOS, чтобы помочь Firebase Authentication определить, следует ли создавать ссылку только для Интернета или для мобильных устройств, которая открывается на устройстве Android или Apple. |
androidPackageName | НСстринг | Задает имя пакета Android, чтобы помочь Firebase Authentication определить, следует ли создавать ссылку только для Интернета или для мобильных устройств, которая открывается на устройстве Android или Apple. |
handleCodeInApp | БООЛ | Будет ли ссылка на действие по электронной почте сначала открыта в мобильном приложении или по веб-ссылке. По умолчанию — ложь. Если установлено значение true, ссылка на код действия будет отправлена как универсальная ссылка или ссылка на приложение Android и будет открыта приложением, если оно установлено. В противном случае код сначала будет отправлен в веб-виджет, а затем при продолжении будет перенаправлено в приложение, если оно установлено. |
linkDomain | НСстринг | Если для проекта определены пользовательские домены ссылок Hosting , укажите, какой из них использовать, когда ссылка должна открываться указанным мобильным приложением. В противном случае автоматически выбирается домен по умолчанию (например,PROJECT_ID .firebaseapp.com ). |
dynamicLinkDomain | НСстринг | Устарело. Не указывайте этот параметр. |
В следующем примере показано, как отправить ссылку для подтверждения по электронной почте, которая сначала откроется в мобильном приложении, используя собственный домен ссылки Hosting custom-domain.com
. Глубокая ссылка будет содержать полезные данные URL-адреса продолжения https://www.example.com/?email=user@example.com
.
Быстрый
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. })
Цель-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 при отправке ссылки, которая должна быть открыта в мобильном приложении. Чтобы использовать эту функцию, ссылки Hosting необходимо настроить в консоли Firebase .
Настройка приложений Apple:
- Если вы планируете обрабатывать эти ссылки из своего приложения, вам необходимо настроить домен ссылки Hosting как связанный домен в возможностях вашего приложения.
- Подробнее об этом читайте в инструкциях по получению ссылок на хостинг iOS .
Настройка Android-приложений:
- Если вы планируете обрабатывать эти ссылки из своего приложения Android, имя пакета вашего приложения необходимо указать в настройках проекта консоли Firebase . Кроме того, необходимо предоставить SHA-1 и SHA-256 сертификата приложения.
- Вам также потребуется настроить фильтр намерений для глубокой ссылки в файле
AndroidManifest.xml
. - Подробнее об этом читайте в инструкциях по получению ссылок на хостинг Android .
Обработка действий с электронной почтой в веб-приложении
Вы можете указать, хотите ли вы сначала обработать ссылку с кодом действия из веб-приложения, а затем перенаправить на другую веб-страницу или мобильное приложение после успешного завершения, при условии, что мобильное приложение доступно. Это делается путем установки handleCodeInApp
значения false
в объекте FIRActionCodeSettings
(Obj-C) или ActionCodeSettings
(Swift). Хотя идентификатор пакета или имя пакета Android не требуются, их предоставление позволит пользователю перенаправить обратно в указанное приложение после завершения кода действия по электронной почте.
Здесь используется веб-URL-адрес, настроенный в разделе шаблонов действий по электронной почте. Для всех проектов предусмотрен стандарт по умолчанию. Обратитесь к настройке обработчиков электронной почты , чтобы узнать больше о том, как настроить обработчик действий электронной почты.
В этом случае ссылка в параметре запроса continueURL
будет ссылкой Hosting , полезной нагрузкой которой является URL
указанный в объекте ActionCodeSettings
.
При обработке действий с электронной почтой, таких как проверка электронной почты, код действия из параметра запроса oobCode
необходимо проанализировать из глубокой ссылки, а затем применить через applyActionCode
, чтобы изменение вступило в силу, т. е. электронное письмо должно быть проверено.
Обработка действий с электронной почтой в мобильном приложении
Вы можете указать, хотите ли вы сначала обрабатывать ссылку с кодом действия в своем мобильном приложении, если оно установлено. Если ссылка нажимается на устройстве, которое не поддерживает мобильное приложение, вместо этого она открывается с веб-страницы. Это делается путем установки handleCodeInApp
значения true
в объекте FIRActionCodeSettings
(Obj-C) или ActionCodeSettings
(Swift). Также необходимо указать имя или идентификатор пакета Android мобильного приложения. Резервный URL-адрес веб-сайта, используемый здесь, когда мобильное приложение недоступно, настроен в разделе шаблонов действий по электронной почте. Для всех проектов предусмотрен стандарт по умолчанию. Обратитесь к настройке обработчиков электронной почты , чтобы узнать больше о том, как настроить обработчик действий электронной почты.
В этом случае ссылка на мобильное приложение, отправленная пользователю, будет ссылкой Hosting , полезной нагрузкой которой является URL-адрес кода действия, настроенный в консоли, с параметрами запроса oobCode
, mode
, apiKey
и continueUrl
. Последний будет исходным URL
указанным в объекте FIRActionCodeSettings
(Obj-C) или ActionCodeSettings
(Swift). Код действия можно применить непосредственно из мобильного приложения аналогично тому, как он обрабатывается из веб-потока, описанного в разделе настройки обработчиков электронной почты .
При обработке действий с электронной почтой, таких как проверка электронной почты, код действия из параметра запроса oobCode
необходимо проанализировать из глубокой ссылки, а затем применить через applyActionCode
, чтобы изменение вступило в силу, т. е. электронное письмо должно быть проверено.