Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

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

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

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

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

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

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

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

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

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

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

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

  • Когда ссылка обрабатывается в виджетах веб-действий, это глубокая ссылка в параметре запроса continueUrl .
  • Когда ссылка обрабатывается в приложении напрямую, это параметр запроса continueUrl в глубокой ссылке динамической ссылки.
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 (логическое значение | не определено) Будет ли ссылка действия электронной почты сначала открыта в мобильном приложении или в веб-ссылке. Значение по умолчанию — ложь. Если установлено значение 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 откройте раздел Dynamic Links .
    2. Если вы еще не приняли условия динамических ссылок и не создали домен динамических ссылок, сделайте это сейчас.

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

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