Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

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

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

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

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

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

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

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

Для того , чтобы надежно пройти по- прежнему URL, домен для URL нужно будет добавлен в качестве авторизованного домена в консоли Firebase . Это делается в разделе Проверка подлинности, добавив этот домен в список авторизованных доменов под знаком-во вкладке метод , если он еще не существует.

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

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

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

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

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

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

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

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

      example.page.link

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

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

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

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

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

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

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

В этом случае связь в пределах continueUrl параметра запроса будет ссылка FDL чей полезной нагрузки является URL - ActionCodeSettings 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 для того , чтобы изменения вступили в силу, то есть электронная почта должна быть проверена.