Я хочу использовать проверку подлинности с помощью ссылки электронной почты Firebase в моем приложении iOS (Flutter) с настраиваемым доменом :
Приложение запрашивает Firebase Auth backend для отправить электронное письмо пользователю. - works
Пользователь нажимает ссылку в письме и возвращается в приложение. - работает
Приложение обрабатывает полезную нагрузку этой ссылки для выполнения входа. - не работает
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 просто тихо добавил в нужном месте! Вы можете вставить ссылку на приложение заметок, щелкнуть по нему, и оно будет работать!
Только при просмотре исходного кода электронной почты вы увидите, что его на самом деле нет:
При запросе ссылки я звоню 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 /_/*",
"/*"
]
}]
}
}