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

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

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

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

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

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

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

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

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

ActionCodeSettings экземпляр должен быть обеспечен при отправке по электронной почте для сброса пароля или проверки электронной почты. Он может быть создан с помощью соответствующего ActionCodeSettings.Builder класса , который содержит следующие методы:

Методика Описание
setUrl(String url)

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

  • Когда связь осуществляется в виджетах веб действий, это глубокая связь в continueUrl параметра запроса.
  • Когда ссылка обрабатывается в приложении непосредственно, это continueUrl параметр запроса в глубоком звене Dynamic Link.
setIOSBundleId(String iOSBundleId) Устанавливает идентификатор пакета iOS. Это попытается открыть ссылку в приложении для iOS, если оно установлено. Приложение iOS необходимо зарегистрировать в консоли.
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) Устанавливает имя пакета Android. Это попытается открыть ссылку в приложении для Android, если оно установлено. Если installIfNotAvailable установлено значение true , оно определяет , следует ли установить Android приложение , если поддерживает устройство это и приложение не установлено. Если указано minimumVersion и установлена ​​более старая версия приложения, пользователь попадает в Play Store для обновления приложения. Приложение Android необходимо зарегистрировать в консоли.
setHandleCodeInApp(boolean status) Будет ли сначала открываться ссылка на действие электронной почты в мобильном приложении или веб-ссылка. По умолчанию - false. Если установлено значение true, ссылка на код действия будет отправлена ​​как универсальная ссылка или ссылка на приложение Android и будет открыта приложением, если оно установлено. В ложном случае код сначала будет отправлен в веб-виджет, а затем при продолжении будет перенаправлен в приложение, если оно установлено.
setDynamicLinkDomain(String dynamicLinkDomain) Устанавливает домен (или поддомен) динамической ссылки, который будет использоваться для текущей ссылки, если она должна быть открыта с помощью динамических ссылок Firebase. Поскольку для каждого проекта можно настроить несколько доменов с динамической связью, в этом поле можно явно выбрать один. Если ничего не указано, по умолчанию используется первый домен.

В следующем примере показано , как отправить ссылку для подтверждения электронной почты , который будет открываться в мобильном приложении первый как Firebase Dynamic Link (приложение IOS com.example.ios или Android приложение com.example.android ). Глубокая ссылка будет содержать по- прежнему URL полезной нагрузки https://www.example.com/?email=user@example.com .

Джава

FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseUser user = auth.getCurrentUser();

String url = "http://www.example.com/verify?uid=" + user.getUid();
ActionCodeSettings actionCodeSettings = ActionCodeSettings.newBuilder()
        .setUrl(url)
        .setIOSBundleId("com.example.ios")
        // The default for this is populated with the current android package name.
        .setAndroidPackageName("com.example.android", false, null)
        .build();

user.sendEmailVerification(actionCodeSettings)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "Email sent.");
                }
            }
        });

Котлин + KTX

val auth = Firebase.auth
val user = auth.currentUser!!

val url = "http://www.example.com/verify?uid=" + user.uid
val actionCodeSettings = ActionCodeSettings.newBuilder()
        .setUrl(url)
        .setIOSBundleId("com.example.ios")
        // The default for this is populated with the current android package name.
        .setAndroidPackageName("com.example.android", false, null)
        .build()

user.sendEmailVerification(actionCodeSettings)
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d(TAG, "Email sent.")
            }
        }

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 динамические ссылки .

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

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

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

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

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

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

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

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

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

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