Параметры запроса Angular обрабатываются несколькими вопросительными знаками

#ionic-framework #firebase-authentication #progressive-web-apps #deep-linking

#ionic-framework #firebase-аутентификация #progressive-веб-приложения #глубокая привязка

Вопрос:

Я пытаюсь обработать ссылку подтверждения по электронной почте, которая автоматически генерируется Firebase в моем приложении Ionic / Angular на веб-платформе. Я пробовал использовать плагин Deeplink cordova (в документах говорится, что он поддерживает web), но возвращает ошибку «cordova_not_available». Я пробовал использовать плагин приложения capacitor, но он возвращает пустую строку по умолчанию в браузере. Я пытался вызвать, location.toString() но ссылка содержит несколько вопросительных знаков в значениях параметров запроса, и все, начиная со второго вопросительного знака, удаляется. Ссылка, сгенерированная Firebase, выглядит следующим образом:

 https://example.com?link=https://example.com?apiKey={myApiKey}&mode=verifyEmail&oobCode={theCodeIneed}&continueUrl=https://example.com/email-confirmed&lang=enamp;apn=com.example.myAppNameamp;amvamp;ibi=com.example.myAppNameamp;ifl=https://example.com?apiKey={myApiKey}&mode=verifyEmail&oobCode={theCodeIneed}&continueUrl=https://example.com/email-confirmed/&lang=en
  

Но то, что я получаю от location.toString() (лучшее на данный момент), просто:

 https://example.com?link=https://example.com
  

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

Есть ли способ получить полную ссылку?

Ответ №1:

Я, наконец, обнаружил, что, установив handleCodeInApp = false параметр actionCodeSettings методов Firebase sendPasswordResetEmail или sendEmailVerification, ссылка, автоматически сгенерированная Firebase, имеет только один вопросительный знак (я не знаю почему), таким образом, ею можно управлять location.toString() для извлечения oobCode.