Ios 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中

我想在我的iOS(flatter)应用程序中使用Firebase电子邮件链接身份验证,该应用程序具有自定义域

  • 应用程序请求Firebase Auth后端向用户发送电子邮件。-工作

  • 用户单击电子邮件中的链接并返回应用程序。-工作

  • 应用程序处理该链接的有效负载以执行登录。-不起作用

  • 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上复制链接或者长按它来查看预览,斜杠就会悄悄地添加到正确的位置!您可以将链接粘贴到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
    以获取调试视图。它在图表上方的一个大红色框中显示错误-如果有

  • 检查您的iOS配置
  • 将这两行临时添加到
    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 ----