【发布时间】:2020-08-07 03:49:46
【问题描述】:
我想在带有自定义域的 iOS (Flutter) 应用中使用 Firebase 电子邮件链接身份验证:
应用请求 Firebase 身份验证后端向用户发送电子邮件。 -- 有效
用户单击电子邮件中的链接并返回到应用程序。 -- 有效
应用程序处理该链接的有效负载以执行登录。 -- 不起作用
Firebase 动态链接通常可以正常工作,但来自该特定 Firebase 自动生成的电子邮件的链接却不能。从技术上讲,应用程序被带到前台,但 Firebase 动态链接 onLink 回调未被触发。我将其追踪到电子邮件链接 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 上复制链接或长按它来查看预览,斜线只是默默地添加到正确的位置!您可以将链接粘贴到笔记应用程序,单击它,它就可以工作了!
只有在查看邮件的源代码时才能看到它实际上并不存在:
请求链接时,我调用FirebaseAuth.instance.sendSignInWithEmailLink 并设置这些参数:
url: 'https://app.mydomain.com',
dynamicLinkDomain: 'link.mydomain.com',
dynamicLinkDomain 参数不接受协议或路径。
有人知道如何...
- 让 Firebase 在发送邮件时在链接中添加这个斜杠?
或
- 让 Firebase 动态链接的
onLink回调对没有尾部斜杠的点击链接做出反应?
供参考
我的 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-site-association (https://link.mydomain.com/apple-app-site-association):
{
"applinks": {
"apps": [],
"details": [{
"appID": "XYZ.com.mydomain.app",
"paths": [
"NOT /_/*",
"/*"
]
}]
}
}
【问题讨论】:
标签: ios firebase flutter firebase-authentication firebase-dynamic-links