Проверка электронной почты Firebase не работает с ActionCodeSetting - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь реализовать проверку электронной почты пользователя (с URL-адресом проверки по умолчанию в шаблоне электронной почты) и URL-адресом ActionCodeSetting (динамическая ссылка), чтобы вернуть пользователя в приложение. Я сбит с толку тем, как должна работать проверка электронной почты Firebase с ActionCodeSetting. Я прочитал все доступные страницы документации, и мне все еще неясно, как правильно настроить «URL-адрес продолжения», чтобы НЕ выгружать и переопределять URL-адрес подтверждения по умолчанию.

Что я сделал:

  1. Я проверил подтверждение электронной почты с помощью автоматически сгенерированной ссылки для подтверждения электронной почты. Это сработало.
  2. Затем я добавил URL-адрес ActionCodeSetting, который использует домен, который добавляется в связанные домены проекта XCode. Это помогло вернуть пользователя в приложение после нажатия на ссылку подтверждения.
  3. Проблема: проверка электронной почты больше не работает.

Вот код, который я реализовал:

var actionCodeSettings = ActionCodeSettings.init()
                actionCodeSettings.handleCodeInApp = true
                let user = Auth.auth().currentUser
                let urlString = "https://blaproject.page.link/zCB4"
                actionCodeSettings.setIOSBundleID(Bundle.main.bundleIdentifier!)
                actionCodeSettings.setAndroidPackageName("com.example.android", installIfNotAvailable:true, minimumVersion:"12")

                Auth.auth().currentUser?.sendEmailVerification(with: actionCodeSettings, completion: { (error) in
                    print("verification email sent")
                    print("action code setting URL is: \(String(describing: actionCodeSettings.url))")
                })

Вот URL подтверждения по умолчанию из шаблона электронной почты в консоли Firebase:

https://blaproject -ea9d6.firebaseapp.com / __ / авториз / действие? Mode = & oobCode =

А вот проверочный URL-адрес, отправляемый по вышеуказанному коду:

https://blaproject.page.link? Ссылка = https://blaproject -ea9d6.firebaseapp.com / / авториз / действие? ApiKey% 3DAIzaSyAi1fxd-HdkfXzYJxTpwmB3_mVCy5gvWxA% 26mode% 3DverifyEmail% 26oobCode% 3DqjvGoqc1n3ya0OIi_tWIYTpp59DYKgB6Sbj0EymN2IkAAAFkYNutMA% 26continueUrl% 3D https://blaproject.page.link/zCE4%26lang%3Den&apn=com.example.android&amv=12&ibi=blaproject.blaprojectV0-2&ifl=https://blaproject-ea9d6.firebaseapp.com//auth/action?apiKey%3DAIzaSyAi1fxd-HdkfXzYJxTpwmB3_mVCy5gvWxA%26mode%3DverifyEmail%26oobCode%3DqjvGoqc1n3ya0OIi_tWIYTpp59DYKgB6Sbj0EymN2IkAAAFkYNutMA%26continueUrl%3Dhttps://blaproject.page.link/zCE4%26lang%3Den

Итак, мой вопрос: почему этот URL-адрес не проверяет электронную почту пользователя, а затем использует URL-адрес продолжения (и связанный домен), чтобы запустить приложение? Приложение только открывается, без проверки электронной почты пользователя.

Спасибо за любые советы, которые вы можете дать, чтобы помочь мне понять, что я не понимаю:)

1 Ответ

0 голосов
/ 06 июля 2018

Когда ссылка запускает ваше приложение, чтобы открыть. Вам нужно разобрать oobCode из глубокой ссылки. Вы можете использовать клиентскую библиотеку FDL, чтобы получить глубокую ссылку. Обратитесь к следующей документации о формате глубокой ссылки и о том, как анализировать код: https://firebase.google.com/docs/auth/custom-email-handler

Как только вы получите код, вам необходимо применить его с помощью auth.applyActionCode(code) API. Это подтвердит адрес электронной почты.

После проверки вы можете позвонить user.reload(), чтобы обновить свойство emailVerified для пользователя. Вы также можете принудительно user.getIdToken(true) принудительно обновить токен обновленным подтвержденным адресом электронной почты, если вы используете правило безопасности Firebase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...