我在 TestFlight 上有一个应用程序,我正在尝试使用 FireBase 中的 emailid 设置无密码登录。
我已完成以下操作:
httpsdotslashslash<custom domain>/login/?link=https://<custom domain>/login&isi=<app id from itunes connect. Looks like this: 167*******>&ibi=<bundleid>
确认
https://<custom domain>/apple-app-site-association
正确返回。请注意,我使用 Firebase 托管来托管此网站。并已确认 https://<firebase-projectid>.firebase.app/apple-app-site-association
也返回上述内容。即自定义域正确解析到此 Firebase 托管 url。
在信息中,添加了带有标识符“appLink”和“url schema”的 url 类型
确保我的 GoogleService-Info 是最新的
在我的项目目标的“全部”下启用“签名和功能”中的关联域(不仅仅是调试或发布)
添加了
applinks:<customdomain>
和 activitycontinuation:<customdomain>
在我的“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")
}
}
}
观察到的行为:
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
ⓧ Error in handleIncomingDynamicLink(_:): The operation couldn’t be completed. Universal link URL could not be parsed by Dynamic Links.
尝试过很多事情。 但是,无法超越这个阶段。不确定我的链接有什么问题。正确行为时应该是什么样子?我应该用 oobCode 做点什么吗?为什么有两个重定向?
很乐意协助您提供任何其他信息。谢谢!
我可以通过将所有 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
您的设置看起来不错,请确保您的通用链接不包含无法解析的字符。例如,在我的应用程序中,链接:
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 问题...