Google 致力于为黑人社区推动种族平等。查看具体举措

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

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

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

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

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

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

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

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

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

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

Быстрый

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

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

  • Когда связь осуществляется в виджетах веб действий, это глубокая связь в continueUrl параметра запроса.
  • Когда ссылка обрабатывается в приложении непосредственно, это continueUrl параметр запроса в глубоком звене Dynamic Link.
iOSBundleID Нить Устанавливает идентификатор пакета. Это попытается открыть ссылку в приложении Apple, если оно установлено. Приложение необходимо зарегистрировать в консоли. Если идентификатор пакета не указан, значение этого поля устанавливается равным идентификатору пакета основного пакета приложения.
androidPackageName Нить Устанавливает имя пакета Android. Это попытается открыть ссылку в приложении для Android, если оно установлено.
androidInstallIfNotAvailable Bool Указывает, следует ли устанавливать приложение Android, если устройство поддерживает его и приложение еще не установлено. Если это поле предоставляется без packageName, выдается ошибка, объясняющая, что packageName должно быть предоставлено вместе с этим полем.
androidMinimumVersion Нить Минимальная версия приложения, поддерживаемая в этом потоке. Если указано minimumVersion и установлена ​​более старая версия приложения, пользователь попадает в Play Store для обновления приложения. Приложение Android необходимо зарегистрировать в консоли.
handleCodeInApp Bool Будет ли сначала открываться ссылка на действие электронной почты в мобильном приложении или веб-ссылка. По умолчанию - false. Если установлено значение true, ссылка на код действия будет отправлена ​​как универсальная ссылка или ссылка на приложение Android и будет открыта приложением, если оно установлено. В ложном случае код сначала будет отправлен в веб-виджет, а затем при продолжении будет перенаправлен в приложение, если оно установлено.
dynamicLinkDomain Нить Устанавливает домен (или поддомен) динамической ссылки, который будет использоваться для текущей ссылки, если она должна быть открыта с помощью динамических ссылок Firebase. Поскольку для каждого проекта можно настроить несколько доменов с динамической связью, в этом поле можно явно выбрать один. Если ничего не указано, по умолчанию используется первый домен.

Цель-C

Параметр Тип Описание
URL NSString

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

  • Когда связь осуществляется в виджетах веб действий, это глубокая связь в continueUrl параметра запроса.
  • Когда ссылка обрабатывается в приложении непосредственно, это continueUrl параметр запроса в глубоком звене Dynamic Link.
iOSBundleID NSString Устанавливает идентификатор пакета. Это попытается открыть ссылку в приложении Apple, если оно установлено. Приложение необходимо зарегистрировать в консоли.
androidPackageName NSString Устанавливает имя пакета Android. Это попытается открыть ссылку в приложении для Android, если оно установлено.
androidInstallIfNotAvailable BOOL указывает, следует ли устанавливать приложение Android, если устройство поддерживает его и приложение еще не установлено. Если это поле предоставляется без packageName, выдается ошибка, объясняющая, что packageName должно быть предоставлено вместе с этим полем.
androidMinimumVersion NSString Минимальная версия приложения, поддерживаемая в этом потоке. Если указано minimumVersion и установлена ​​более старая версия приложения, пользователь попадает в Play Store для обновления приложения. Приложение Android необходимо зарегистрировать в консоли.
handleCodeInApp BOOL Будет ли сначала открываться ссылка на действие электронной почты в мобильном приложении или веб-ссылка. По умолчанию - false. Если установлено значение true, ссылка на код действия будет отправлена ​​как универсальная ссылка или ссылка на приложение Android и будет открыта приложением, если оно установлено. В ложном случае код сначала будет отправлен в веб-виджет, а затем при продолжении будет перенаправлен в приложение, если оно установлено.
dynamicLinkDomain NSString Устанавливает домен (или поддомен) динамической ссылки, который будет использоваться для текущей ссылки, если она должна быть открыта с помощью динамических ссылок 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 =  ActionCodeSettings.init()
actionCodeSettings.canHandleInApp = true
let user = Auth.auth().currentUser()
actionCodeSettings.URL =
    String(format: "https://www.example.com/?email=%@", user.email)
actionCodeSettings.iOSbundleID = Bundle.main.bundleIdentifier!
actionCodeSettings.setAndroidPakageName("com.example.android",
                                         installIfNotAvailable:true,
                                         minumumVersion:"12")
// When multiple custom dynamic link domains are defined, specify which one to use.
actionCodeSettings.dynamicLinkDomain = "example.page.link"
user.sendEmailVerification(withActionCodeSettings:actionCodeSettings { error in
  if error {
    // Error occurred. Inspect error.code and handle error.
    return
  }
  // Email verification sent.
})

Цель-C

 FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init];
 actionCodeSettings.handleCodeInApp = YES;
 FIRUser *user = [FIRAuth auth].currentUser;
 NSString *urlString =
     [NSString stringWithFormat:@"https://www.example.com/?email=%@", user.email];
 actionCodeSettings.URL = [NSURL URLWithString:urlString];
 actionCodeSettings.iOSBundleID = [NSBundle mainBundle].bundleIdentifier;
 // When multiple custom dynamic link domains are defined, specify which one to use.
 actionCodeSettings.dynamicLinkDomain = @"example.page.link";
 [actionCodeSettings setAndroidPackageName:@"com.example.android"
                     installIfNotAvailable:YES
                            minimumVersion:'12'];
 [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings
                                        completion:^(NSError *_Nullable error) {
   if (error) {
     // Error occurred. Inspect error.code and handle error.
     return;
   }
   // Email verification 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. Настройка приложений Apple:

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

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

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

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

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

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

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

Вы можете указать, хотите ли вы сначала обрабатывать ссылку кода действия в своем мобильном приложении, если оно установлено. С Android приложений, вы также имеете возможность указать через androidInstallIfNotAvailable , что приложение должно быть установлено , если устройство поддерживает его , и он еще не установлен. Если по ссылке щелкнуть с устройства, которое не поддерживает мобильное приложение, вместо этого она открывается с веб-страницы. Это делается путем установки handleCodeInApp к true в FIRActionCodeSettings (Obj-С) или ActionCodeSettings (Swift) объекта. Также необходимо указать имя пакета Android мобильного приложения или идентификатор пакета. Резервный веб-URL, используемый здесь, когда мобильное приложение недоступно, является тем, который настроен в разделе шаблонов действий электронной почты. Один по умолчанию предоставляется для всех проектов. Обратитесь к настройке обработчиков электронной почты , чтобы узнать больше о том , как настроить обработчик электронной почты действий.

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

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