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

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

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

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

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

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

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

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

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

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

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

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

  • Когда ссылка обрабатывается в виджетах веб-действий, это глубокая ссылка в параметре запроса continueUrl .
  • Если ссылка обрабатывается непосредственно в приложении, это параметр запроса continueUrl в глубокой ссылке динамической ссылки.
iOS ({bundleId: строка}|не определено) Устанавливает идентификатор пакета iOS. Будет предпринята попытка открыть ссылку в приложении iOS, если оно установлено. Приложение iOS необходимо зарегистрировать в консоли.
android ({packageName: строка, installApp:boolean|не определено, минимальная версия: строка|не определено}|не определено) Устанавливает имя пакета Android. Будет предпринята попытка открыть ссылку в приложении Android, если оно установлено. Если передается installApp , он указывает, следует ли устанавливать приложение Android, если устройство его поддерживает и приложение еще не установлено. Если это поле указано без packageName , выдается ошибка, объясняющая, что packageName должно быть указано вместе с этим полем. Если указано minimumVersion и установлена ​​более старая версия приложения, пользователь перенаправляется в Play Store для обновления приложения. Приложение Android необходимо зарегистрировать в консоли.
handleCodeInApp (логическое значение|не определено) Будет ли ссылка на действие по электронной почте сначала открыта в мобильном приложении или по веб-ссылке. По умолчанию — ложь. Если установлено значение true, ссылка на код действия будет отправлена ​​как универсальная ссылка или ссылка на приложение Android и будет открыта приложением, если оно установлено. В противном случае код сначала будет отправлен в веб-виджет, а затем при продолжении будет перенаправлено в приложение, если оно установлено.
dynamicLinkDomain (строка|не определено) Устанавливает домен динамической ссылки (или поддомен), который будет использоваться для текущей ссылки, если она должна быть открыта с помощью динамических ссылок Firebase. Поскольку для каждого проекта можно настроить несколько доменов динамических ссылок, это поле дает возможность явно выбрать один из них. Если ничего не указано, по умолчанию используется первый домен.

В следующем примере показано, как отправить ссылку для подтверждения электронной почты, которая сначала откроется в мобильном приложении как динамическую ссылку Firebase, используя собственный домен динамических ссылок example.page.link (приложение для iOS com.example.ios или приложение для Android com.example.android , на который будет установлено приложение, если оно еще не установлено, и минимальная версия — 12 ). Глубокая ссылка будет содержать полезные данные 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 Auth использует динамические ссылки Firebase при отправке ссылки, которая должна быть открыта в мобильном приложении. Чтобы использовать эту функцию, динамические ссылки необходимо настроить в консоли Firebase.

  1. Включите динамические ссылки Firebase:

    1. В консоли Firebase откройте раздел «Динамические ссылки» .
    2. Если вы еще не приняли условия Dynamic Links и не создали домен Dynamic Links, сделайте это сейчас.

      Если вы уже создали домен динамических ссылок, обратите на это внимание. Домен динамических ссылок обычно выглядит следующим образом:

      example.page.link

      Это значение понадобится вам, когда вы настроите приложение Apple или Android для перехвата входящей ссылки.

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

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

    1. Если вы планируете обрабатывать эти ссылки из своего приложения iOS, идентификатор пакета iOS необходимо указать в настройках проекта Firebase Console. Кроме того, необходимо указать идентификатор App Store и идентификатор команды разработчиков Apple.
    2. Вам также потребуется настроить домен универсальной ссылки FDL как связанный домен в возможностях вашего приложения.
    3. Если вы планируете распространять свое приложение на iOS версии 8 и ниже, вам необходимо установить идентификатор пакета iOS в качестве специальной схемы для входящих URL-адресов.
    4. Дополнительные сведения см. в разделе «Получение динамических ссылок iOS» .

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

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

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

В этом случае ссылка в параметре запроса continueUrl будет ссылкой FDL, полезной нагрузкой которой является URL , указанный в объекте ActionCodeSettings . Хотя вы можете перехватывать и обрабатывать входящую ссылку из вашего приложения без какой-либо дополнительной зависимости, мы рекомендуем использовать клиентскую библиотеку FDL для анализа глубокой ссылки.

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

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

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

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

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

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