Firebase Dynamiclinks 无法解析通用链接

问题描述 投票:0回答:2

我在 TestFlight 上有一个应用程序,我正在尝试使用 FireBase 中的 emailid 设置无密码登录。

我已完成以下操作:

  1. 在 Firebase 控制台上启用无密码登录
  2. 在 Firebase 上创建了动态链接。
httpsdotslashslash<custom domain>/login/?link=https://<custom domain>/login&isi=<app id from itunes connect. Looks like this: 167*******>&ibi=<bundleid>
  1. 确认

    https://<custom domain>/apple-app-site-association
    正确返回。请注意,我使用 Firebase 托管来托管此网站。并已确认
    https://<firebase-projectid>.firebase.app/apple-app-site-association
    也返回上述内容。即自定义域正确解析到此 Firebase 托管 url。

  2. 在信息中,添加了带有标识符“appLink”和“url schema”的 url 类型

  3. 确保我的 GoogleService-Info 是最新的

  4. 在我的项目目标的“全部”下启用“签名和功能”中的关联域(不仅仅是调试或发布)

  5. 添加了

    applinks:<customdomain>
    activitycontinuation:<customdomain>

  6. 在我的“SceneDelegate”中,我正在处理动态链接

private func handleIncomingDynamicLink(_ incomingURL: URL) {
        DynamicLinks.dynamicLinks().handleUniversalLink(incomingURL) { dynamicLink, error in
          guard error == nil else {
            return print("ⓧ Error in \(#function): \(error!.localizedDescription)")
          }

          guard let link = dynamicLink?.url?.absoluteString else { return }

          if Auth.auth().isSignIn(withEmailLink: link) {
            // Save the link as it will be used in the next step to complete login
            UserDefaults.standard.set(link, forKey: "Link")

          }
        }
      }
  1. 在我的视图控制器中,已按原样从 Firebase 的快速入门 PasswordlessViewController.swift 复制代码。

观察到的行为:

  • 电子邮件链接正在发送。但它看起来是这样的。不确定这是否正确。
httpsdotslashslash<custom domain>/?link=https://<firebase-projectid>.firebaseapp.com/__/auth/action?apiKey=<web api key>&mode=signIn&oobCode=25CRdL7n3qXNatDT2nEypR9UWy17E_G0ChlmqrkpznsAAAGGLYK3jQ&continueUrl=https://<custom domain>/login&lang=en&ibi=<bundleid>&ifl=https://<firebase-projectid>.firebaseapp.com/__/auth/action?apiKey=<web api key>&mode=signIn&oobCode=25CRdL7n3qXNatDT2nEypR9UWy17E_G0ChlmqrkpznsAAAGGLYK3jQ&continueUrl=https://<custom domain>/login&lang=en
  • 单击我的电子邮件中的此网址可以正确打开我的应用程序。 handleIncomingDynamicLink() 也被正确调用。但它会抛出错误
    ⓧ Error in handleIncomingDynamicLink(_:): The operation couldn’t be completed. Universal link URL could not be parsed by Dynamic Links.

尝试过很多事情。 但是,无法超越这个阶段。不确定我的链接有什么问题。正确行为时应该是什么样子?我应该用 oobCode 做点什么吗?为什么有两个重定向?

很乐意协助您提供任何其他信息。谢谢!

ios swift firebase firebase-authentication firebase-dynamic-links
2个回答
3
投票

我可以通过将所有 url 前缀添加到 info.plist 来解决这个问题。

<key>FirebaseDynamicLinksCustomDomains</key>
        <array>
          <string>https://<custom domain>/login</string>
          <string>https://<custom domain>/</string>
        </array>

更多详细信息请访问 https://firebase.google.com/docs/dynamic-links/custom-domains#console


0
投票

您的设置看起来不错,请确保您的通用链接不包含无法解析的字符。例如,在我的应用程序中,链接:

https://fb.page.link/?link=https%3A%2F%2Fmy.app.com%2Fapps%2Fsignup%3Fuid%3DRNS5lYuU3jm4jJFAG8g==&apn=com.my.app&ofl=https://www.my.site

未被

DynamicLinks.dynamicLinks().handleUniversalLink

解析

一旦删除

==
字符,链接就会被解析。可能是 firebase SDK 问题...

© www.soinside.com 2019 - 2024. All rights reserved.