Передача состояния в действиях по электронной почте

Вы можете передать состояние через URL-адрес продолжения при отправке действий по электронной почте для сброса пароля или проверки электронной почты пользователя. Это дает пользователю возможность вернуться в приложение после завершения действия. Кроме того, вы можете указать, следует ли обрабатывать ссылку на действие по электронной почте непосредственно из мобильного приложения, когда оно установлено вместо веб-страницы.

Это может быть чрезвычайно полезно в следующих распространенных сценариях:

  • Пользователь, не вошедший в систему в данный момент, может пытаться получить доступ к содержимому, требующему входа пользователя в систему. Однако пользователь мог забыть свой пароль и, следовательно, запустить поток сброса пароля. В конце потока пользователь ожидает вернуться в раздел приложения, к которому он пытался получить доступ.

  • Приложение может предлагать доступ только к проверенным учетным записям. Например, информационный бюллетень может потребовать от пользователя подтвердить свой адрес электронной почты перед подпиской. Пользователь пройдет процедуру проверки электронной почты и будет ожидать, что вернется в приложение, чтобы завершить подписку.

  • В других случаях пользователь может запустить поток со своего мобильного устройства и ожидать после проверки возврата обратно в свое мобильное приложение вместо браузера.

Возможность передавать состояние через URL-адрес продолжения — это мощная функция, предоставляемая Firebase Auth, которая может значительно улучшить взаимодействие с пользователем.

Передача состояния URL-адреса продолжения в действиях по электронной почте

Чтобы безопасно передать URL-адрес продолжения, домен URL-адреса необходимо добавить в качестве авторизованного домена в консоли Firebase . Это делается в разделе «Аутентификация» путем добавления этого домена в список Авторизованных доменов на вкладке «Метод входа», если его там еще нет.

Экземпляр firebase.auth.ActionCodeSettings необходимо предоставить при отправке электронного письма для сброса пароля или электронного письма с подтверждением. Этот интерфейс принимает следующие параметры:

Параметр Тип Описание
url нить

Устанавливает ссылку (URL-адрес состояния/продолжения), которая имеет разные значения в разных контекстах:

  • Когда ссылка обрабатывается в виджетах веб-действий, это глубокая ссылка в параметре запроса continueUrl .
  • Когда ссылка обрабатывается непосредственно в приложении, это параметр запроса continueUrl в глубокой ссылке ссылки Hosting .
iOS ({bundleId: строка}|не определено) Устанавливает идентификатор пакета iOS, чтобы помочь Firebase Authentication определить, следует ли создавать ссылку только для Интернета или для мобильных устройств, которая открывается на устройстве Apple.
android ({packageName: строка, installApp:boolean|не определено, минимальная версия: строка|не определено}|не определено) Задает имя пакета Android, чтобы помочь Firebase Authentication определить, следует ли создавать ссылку только для Интернета или для мобильных устройств, которая открывается на устройстве Android.
handleCodeInApp (логическое значение|не определено) Будет ли ссылка на действие по электронной почте сначала открыта в мобильном приложении или по веб-ссылке. По умолчанию — ложь. Если установлено значение true, ссылка на код действия будет отправлена ​​как универсальная ссылка или ссылка на приложение Android и будет открыта приложением, если оно установлено. В противном случае код сначала будет отправлен в веб-виджет, а затем при продолжении будет перенаправлено в приложение, если оно установлено.
linkDomain (строка|не определено) Если для проекта определены пользовательские домены ссылок Hosting , укажите, какой из них использовать, когда ссылка должна открываться указанным мобильным приложением. В противном случае автоматически выбирается домен по умолчанию (например, PROJECT_ID .firebaseapp.com ).
dynamicLinkDomain (строка|не определено) Устарело. Не указывайте этот параметр.

В следующем примере показано, как отправить ссылку для подтверждения по электронной почте, которая сначала откроется в мобильном приложении с использованием пользовательского домена 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 Authentication использует Firebase Hosting при отправке ссылки, которая должна быть открыта в мобильном приложении. Чтобы использовать эту функцию, ссылки на хостинг необходимо настроить в консоли Firebase .

  1. Настройка Android-приложений:

    1. Если вы планируете обрабатывать эти ссылки из своего приложения Android, имя пакета вашего приложения необходимо указать в настройках проекта консоли Firebase . Кроме того, необходимо предоставить SHA-1 и SHA-256 сертификата приложения.
    2. Вам также потребуется настроить фильтр намерений для глубокой ссылки в файле AndroidManifest.xml .
    3. Подробнее об этом читайте в инструкциях по получению ссылок на хостинг Android .
  2. Настройка iOS-приложений:

    1. Если вы планируете обрабатывать эти ссылки из своего приложения iOS, вам необходимо настроить домен ссылки Hosting как связанный домен в возможностях вашего приложения.
    2. Подробнее об этом читайте в инструкциях по получению ссылок на хостинг iOS .

Обработка действий с электронной почтой в веб-приложении

Вы можете указать, хотите ли вы сначала обработать ссылку с кодом действия из веб-приложения, а затем перенаправить на другую веб-страницу или мобильное приложение после успешного завершения, при условии, что мобильное приложение доступно. Это делается путем установки handleCodeInApp значения false в объекте firebase.auth.ActionCodeSettings . Хотя идентификатор пакета iOS или имя пакета Android не требуются, их предоставление позволит пользователю перенаправить обратно в указанное приложение после завершения кода действия по электронной почте.

Здесь используется веб-URL-адрес, настроенный в разделе шаблонов действий по электронной почте. Для всех проектов предусмотрен стандарт по умолчанию. Обратитесь к настройке обработчиков электронной почты , чтобы узнать больше о том, как настроить обработчик действий электронной почты.

В этом случае ссылка в параметре запроса continueUrl будет ссылкой на хостинг, полезной нагрузкой которой является URL указанный в объекте ActionCodeSettings .

При обработке действий с электронной почтой, таких как проверка электронной почты, код действия из параметра запроса oobCode необходимо проанализировать из глубокой ссылки, а затем применить через applyActionCode , чтобы изменение вступило в силу, т. е. электронное письмо должно быть проверено.

Обработка действий с электронной почтой в мобильном приложении

Вы можете указать, хотите ли вы сначала обрабатывать ссылку с кодом действия в своем мобильном приложении, если оно установлено. Если ссылка нажимается на устройстве, которое не поддерживает мобильное приложение, вместо этого она открывается с веб-страницы. Это делается путем установки handleCodeInApp значения true в объекте firebase.auth.ActionCodeSettings . Также необходимо указать имя пакета Android или идентификатор пакета iOS мобильного приложения.

Резервный веб-URL, используемый здесь, когда мобильное приложение недоступно, настроен в разделе шаблонов действий по электронной почте. Для всех проектов предусмотрен стандарт по умолчанию. Обратитесь к настройке обработчиков электронной почты , чтобы узнать больше о том, как настроить обработчик действий электронной почты.

В этом случае ссылка на мобильное приложение, отправленная пользователю, будет ссылкой Hosting , полезной нагрузкой которой является URL-адрес кода действия, настроенный в консоли, с параметрами запроса oobCode , mode , apiKey и continueUrl . Последний будет исходным URL указанным в объекте ActionCodeSettings . Код действия можно применить непосредственно из мобильного приложения аналогично тому, как он обрабатывается из веб-потока, описанного в разделе настройки обработчиков электронной почты .

При обработке действий с электронной почтой, таких как проверка электронной почты, код действия из параметра запроса oobCode необходимо проанализировать из глубокой ссылки, а затем применить через applyActionCode , чтобы изменение вступило в силу, т. е. электронное письмо должно быть проверено.