Ios Firebase身份验证链接不工作-缺少尾部斜杠?
我想在我的iOS(flatter)应用程序中使用Firebase电子邮件链接身份验证,该应用程序具有自定义域:Ios Firebase身份验证链接不工作-缺少尾部斜杠?,ios,firebase,flutter,firebase-authentication,firebase-dynamic-links,Ios,Firebase,Flutter,Firebase Authentication,Firebase Dynamic Links,我想在我的iOS(flatter)应用程序中使用Firebase电子邮件链接身份验证,该应用程序具有自定义域: 应用程序请求Firebase Auth后端向用户发送电子邮件。-工作 用户单击电子邮件中的链接并返回应用程序。-工作 应用程序处理该链接的有效负载以执行登录。-不起作用 Firebase动态链接通常可以正常工作,但来自特定Firebase自动生成电子邮件的链接不能正常工作。从技术上讲,该应用程序被带到前台,但Firebase动态链接onLink回调未被触发。我找到了电子邮件链接URL中
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上复制链接或者长按它来查看预览,斜杠就会悄悄地添加到正确的位置!您可以将链接粘贴到notes应用程序,单击它,它就会工作
只有在查看电子邮件的源代码时,您才能看到它实际上并不存在:
请求链接时,我调用FirebaseAuth.instance.sendsigniWithEmailLink
,并设置以下参数:
url: 'https://app.mydomain.com',
dynamicLinkDomain: 'link.mydomain.com',
dynamicLinkDomain
参数不接受协议或路径
有人知道如何……
- 让Firebase在发送邮件时将此斜杠添加到链接中
- 使Firebase动态链接的
回调对没有尾部斜杠的单击链接作出反应onLink
供参考 My 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>
别忘了添加dynamicLinkDomain:'link.mydomain.com',
在添加了dynamicLinkDomain:'link.mydomain.com'
P.S flatter project
在调试Firebase动态链接的iOS实现之后,发现缺少的斜杠是显式的(尽管我不知道为什么)。它在电子邮件链接中的缺失似乎是一个bug,应该在Firebase后端修复;我提交了一份关于这个的错误报告。Firebase控制台没有配置动态链接域以用于自动生成登录链接的选项(而是从已配置域列表中选择任何第一个域,但不知何故没有路径),因此我希望将来可以对其进行配置
变通办法 我只是简单地更改了它(在我的flatter项目中,它位于Pods/FirebaseDynamicLinks/FIRDynamicLinks.m
),并删除了尾部斜杠的检查。但是当依赖项被更新时,我必须重复它,我不知道为什么检查会显式出现,所以它可能会导致其他问题
关于调试动态链接的另外两个提示
&d=1
以获取调试视图。它在图表上方的一个大红色框中显示错误-如果有
AppDelegate.m
中的didfishlaunchingwithoptions
:
[FIRApp configure];
[FIRDynamicLinks performDiagnosticsWithCompletion:nil];
(您可能需要导入Firebase;)
在Xcode中运行该项目,以在调试控制台中查看如下报告:
---- Firebase Dynamic Links diagnostic output start ----
Firebase Dynamic Links framework version 4.0.8
System information: OS iOS, OS version 14.0.1, model iPhone
Current date 2020-10-02 05:02:39 +0000
Device locale en-US (raw en_US), timezone Europe/Berlin
Specified custom URL scheme is com.domain and Info.plist contains such scheme in CFBundleURLTypes key.
AppID Prefix: XXXXXXXX, Team ID: XXXXXXXX, AppId Prefix equal to Team ID: YES
performDiagnostic completed successfully! No errors found.
---- Firebase Dynamic Links diagnostic output end ----
与自定义域的链接在Apple Mail中运行良好,但没有其他电子邮件客户端 作为临时解决方案,您可以使用谷歌提供的域(例如projectname.page.link)生成登录链接
您可以跟踪它。我今天收到Firebase支持团队的回复。他们确认了这个错误,并将很快修复它,但不能给我一个时间表,当他们要这样做。你能链接报告的问题在这里跟踪吗?我正在为同样的问题挣扎,我想知道那里发生了什么。我希望我能——但我没有联系。我在上用表格报告。从他们的电子邮件回复中:“我感谢您在这里进行的透彻分析和分享您的解决方法。这看起来是我们这边的一个bug,但是,我还不能分享修复何时可用的任何时间表。一旦我们确定了问题的根本原因,我们一定会解决问题。如需进一步更新,请关注我们的发行说明()。“对我来说,这似乎是Firebase后端的一个bug,而不是iOS实现中的bug。因此,我认为没有公开的问题跟踪。我提出了另一个非常简单的错误,在6月份得到了确认,但在生产中仍然没有任何结果。。。我们应该在发现修复程序已发布后立即在此更新?在哪里?为什么?
[FIRApp configure];
[FIRDynamicLinks performDiagnosticsWithCompletion:nil];
---- Firebase Dynamic Links diagnostic output start ----
Firebase Dynamic Links framework version 4.0.8
System information: OS iOS, OS version 14.0.1, model iPhone
Current date 2020-10-02 05:02:39 +0000
Device locale en-US (raw en_US), timezone Europe/Berlin
Specified custom URL scheme is com.domain and Info.plist contains such scheme in CFBundleURLTypes key.
AppID Prefix: XXXXXXXX, Team ID: XXXXXXXX, AppId Prefix equal to Team ID: YES
performDiagnostic completed successfully! No errors found.
---- Firebase Dynamic Links diagnostic output end ----