Ссылка для аутентификации в Firebase не работает - отсутствует конечный sla sh? - PullRequest
1 голос
/ 23 апреля 2020

Я хочу использовать проверку подлинности с помощью ссылки электронной почты Firebase в моем приложении iOS (Flutter) с настраиваемым доменом :

  1. Приложение запрашивает Firebase Auth backend для отправить электронное письмо пользователю. - works

  2. Пользователь нажимает ссылку в письме и возвращается в приложение. - работает

  3. Приложение обрабатывает полезную нагрузку этой ссылки для выполнения входа. - не работает

Firebase Dynami c Ссылки в целом работают, но ссылка из этого автоматически сгенерированного электронного письма Firebase - нет. Технически приложение выводится на передний план, но обратный вызов Firebase Dynami c Link onLink не запускается. Я отследил его до одного крошечного завершающего элемента sh, который отсутствует в URL ссылки электронной почты:

https://link.mydomain.com?link=https://app.mydomain.com/__/auth/action?apiKey=... (not working)

https://link.mydomain.com/?link=https://app.mydomain.com/__/auth/action?apiKey=... (works)
-------------------------^

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

https://link.mydomain.com/app?link=https://app.mydomain.com/__/auth/action?apiKey=... (not working)

https://link.mydomain.com/app/?link=https://app.mydomain.com/__/auth/action?apiKey=... (works)
-----------------------------^

Наихудшая часть этого различия, из-за которой его было так трудно найти, состоит в том, что если вы скопируете ссылку на iOS или долго нажмете ее, чтобы увидеть предварительный просмотр, sla sh просто тихо добавил в нужном месте! Вы можете вставить ссылку на приложение заметок, щелкнуть по нему, и оно будет работать!

Только при просмотре исходного кода электронной почты вы увидите, что его на самом деле нет:

Screenshot from email source code

При запросе ссылки я звоню FirebaseAuth.instance.sendSignInWithEmailLink с такими параметрами:

url: 'https://app.mydomain.com',
dynamicLinkDomain: 'link.mydomain.com',

Параметр dynamicLinkDomain не принимает протокол или путь.

Кто-нибудь знает, как ...

  • заставить Firebase добавить этот sla sh к ссылке при отправке почты?

или

  • заставляет Firebase Dynami c обратный вызов onLink ссылки реагировать на нажатые ссылки, которые не имеют конечных слов sh?

Для справки

Мой Info.plist содержит этот ключ:

<key>FirebaseDynamicLinksCustomDomains</key>
<array>
    <string>https://link.mydomain.com</string>
</array>

Файл моих прав содержит этот ключ:

<key>com.apple.developer.associated-domains</key>
<array>
    <string>applinks:link.mydomain.com</string>
</array>

apple-app -сайт-ассоциация (https://link.mydomain.com/apple-app-site-association):

{
  "applinks": {
    "apps": [],
    "details": [{
      "appID": "XYZ.com.mydomain.app",
      "paths": [
        "NOT /_/*",
        "/*"
      ]
    }]
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...