Вы можете передать состояние через URL-адрес продолжения при отправке действий по электронной почте для сброса пароля или проверки электронной почты пользователя. Это дает пользователю возможность вернуться в приложение после завершения действия. Кроме того, вы можете указать, следует ли обрабатывать ссылку действия по электронной почте непосредственно из мобильного приложения, если оно установлено вместо веб-страницы.
Это может быть чрезвычайно полезно в следующих распространенных сценариях:
Пользователь, еще не вошедший в систему, может пытаться получить доступ к содержимому, для которого требуется, чтобы пользователь выполнил вход. Однако пользователь мог забыть свой пароль и, следовательно, вызвать процесс сброса пароля. В конце потока пользователь ожидает вернуться к разделу приложения, к которому он пытался получить доступ.
Приложение может предлагать доступ только к проверенным учетным записям. Например, информационный бюллетень может потребовать от пользователя подтвердить свою электронную почту перед подпиской. Пользователь пройдет через процесс проверки электронной почты и ожидает вернуться в приложение, чтобы завершить свою подписку.
В других случаях пользователь мог запустить поток со своего мобильного устройства и ожидать, что после проверки он вернется обратно в свое мобильное приложение, а не в браузер.
Возможность передавать состояние через URL-адрес продолжения — мощная функция, предоставляемая Firebase Auth, которая может значительно улучшить взаимодействие с пользователем.
Передача URL-адреса состояния/продолжения в действиях электронной почты
Чтобы безопасно передать URL-адрес продолжения, домен для URL-адреса должен быть внесен в белый список в консоли Firebase . Это можно сделать в разделе « Аутентификация », добавив этот домен в список авторизованных доменов на вкладке « Метод входа », если его еще нет.
Экземпляр ActionCodeSettings должен быть предоставлен при отправке электронного письма для сброса пароля или электронного письма с подтверждением. Его можно создать с помощью связанного класса ActionCodeSettings.Builder , который содержит следующие методы:
Метод | Описание |
---|---|
setUrl(String url) | Устанавливает ссылку (URL-адрес состояния/продолжения), которая имеет разные значения в разных контекстах:
|
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) | Будет ли ссылка действия электронной почты сначала открыта в мобильном приложении или в веб-ссылке. Значение по умолчанию — ложь. Если установлено значение true, ссылка на код действия будет отправлена как универсальная ссылка или ссылка на приложение Android и будет открыта приложением, если оно установлено. В ложном случае код сначала будет отправлен в веб-виджет, а затем при продолжении будет перенаправлен в приложение, если оно установлено. |
setDynamicLinkDomain(String dynamicLinkDomain) | Устанавливает домен динамической ссылки (или поддомен), который будет использоваться для текущей ссылки, если она должна быть открыта с использованием динамических ссылок Firebase. Поскольку для каждого проекта можно настроить несколько доменов динамической ссылки, в этом поле можно явно выбрать один из них. Если ничего не указано, по умолчанию используется первый домен. |
В следующем примере показано, как отправить ссылку для подтверждения электронной почты, которая сначала откроется в мобильном приложении как динамическая ссылка Firebase (приложение для iOS com.example.ios
или приложение для Android com.example.android
). Глубокая ссылка будет содержать полезную нагрузку URL-адреса продолжения https://www.example.com/?email=user@example.com
.
Kotlin+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.") } }
Java
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."); } } });
Настройка динамических ссылок Firebase
Firebase Auth использует динамические ссылки Firebase при отправке ссылки, которая предназначена для открытия в мобильном приложении. Чтобы использовать эту функцию, динамические ссылки необходимо настроить в консоли Firebase.
Включить динамические ссылки Firebase:
- В консоли Firebase откройте раздел Dynamic Links .
Если вы еще не приняли условия динамических ссылок и не создали домен динамических ссылок, сделайте это сейчас.
Если вы уже создали домен динамических ссылок, обратите на это внимание. Домен динамических ссылок обычно выглядит следующим образом:
example.page.link
Это значение понадобится вам при настройке приложения Apple или Android для перехвата входящей ссылки.
Настройка Android-приложений:
- Если вы планируете обрабатывать эти ссылки из своего приложения Android, имя пакета Android необходимо указать в настройках проекта Firebase Console. Кроме того, необходимо предоставить SHA-1 и SHA-256 сертификата приложения.
- Вам также потребуется настроить фильтр намерений для ссылки на контент в файле AndroidManifest.xml.
- Дополнительные сведения см. в инструкциях по получению динамических ссылок Android .
Настройка iOS-приложений:
- Если вы планируете обрабатывать эти ссылки из своего приложения iOS, необходимо указать идентификатор пакета iOS в настройках проекта Firebase Console. Кроме того, необходимо указать идентификатор App Store и идентификатор команды разработчиков Apple.
- Вам также потребуется настроить домен универсальной ссылки FDL в качестве связанного домена в возможностях вашего приложения.
- Если вы планируете распространять свое приложение на iOS версии 8 и ниже, вам нужно будет установить идентификатор пакета iOS в качестве пользовательской схемы для входящих URL-адресов.
- Дополнительные сведения см. в инструкциях по получению динамических ссылок iOS .
Обработка действий электронной почты в веб-приложении
Вы можете указать, хотите ли вы сначала обрабатывать ссылку кода действия из веб-приложения, а затем перенаправлять на другую веб-страницу или мобильное приложение после успешного завершения, при условии, что мобильное приложение доступно. Это делается путем вызова setHandleCodeInApp(false)
в объекте ActionCodeSettings.Builder . Хотя идентификатор пакета iOS или имя пакета Android не требуются, их предоставление позволит пользователю перенаправить обратно в указанное приложение после завершения кода действия по электронной почте.
Используемый здесь веб-URL настроен в разделе шаблонов действий электронной почты. Один по умолчанию предусмотрен для всех проектов. Обратитесь к настройке обработчиков электронной почты , чтобы узнать больше о том, как настроить обработчик действий электронной почты.
В этом случае ссылка в параметре запроса continueUrl
будет ссылкой FDL, полезной нагрузкой которой является 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
, чтобы изменение вступило в силу, т. е. электронная почта должна быть проверена.