gpt4 book ai didi

firebase - 了解用于身份验证的 Firebase 动态链接中的状态

转载 作者:行者123 更新时间:2023-12-05 04:32:42 26 4
gpt4 key购买 nike

很抱歉,我在理解 Firebase 动态链接时遇到了很多问题。

我的用例是:用户想要从移动应用程序重置密码(或发送电子邮件验证)。

  • 请求是使用带有自定义处理程序的 Firebase 身份验证发出的(自定义域:https://example.com/auth)
  • ActionCodeSettings看起来像:
final ActionCodeSettings codeSettings = ActionCodeSettings(
url: 'https://links.example.com/auth?email=$email',
iOSBundleId: Constants.iosBundleID,
androidPackageName: Constants.androidBundleID,
androidInstallApp: true,
dynamicLinkDomain: "links.example.com",
);
  • 用户点击他通过电子邮件收到的链接,然后被重定向到网站(由 Firebase Hosting 在 example.com 下托管)
  • 当用户完成密码重置后,我希望通过“启动”continueUrl 来重定向他。那应该把他带回移动应用程序。 continueUrl : 'https://links.example.com/auth?email=$email'

但是这不起作用,所以我猜我在某处做错了。

  1. 在我的 iOS 配置中,我添加了 Associated Domains如:applinks:links.example.com .
    Info.plist我添加的文件:
<key>FirebaseDynamicLinksCustomDomains</key>
<array>
<string>https://links.example.com/auth</string>
</array>

(也尝试过:<string>https://links.example.com</string>)

  1. 在我的 Android 配置中,我已将其添加到我的 AndroidManifest.xml 中:
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:host="links.example.com" android:scheme="https"/>
</intent-filter>

有趣的是,在 Android 上完成上述步骤后(在智能手机的网站上),如果我启动 continueUrl它会提示用户是重定向回应用程序还是留在浏览器上打开 URL。

我当然创建了一个子域:links.example.com在 Firebase 动态链接控制台中作为 URL 前缀。

这是我的问题:

  • continueUrl应该重定向回应用程序?
  • ActionCodeSettings continueUrl以上描述是否正确?我在文档中看到总是使用 example.com作为 continueUrl ,但它会与用于托管的自定义域冲突吗?所以我放了links.example.com作为 continueUrl自定义 Firebase 身份验证处理程序是 example.com/auth确实重定向到我网站中的正确网页。
  • 什么是托管 firebase.json这种情况下的配置?
  • 最后的链接是这样的:
https://example.com/auth?mode=resetPassword&oobCode=T0qn8aj_p7TJBWyE5eUh7_7ZwIqwtJ7Q-i8LDf4QrIsAAAF_u6Bi6Q&apiKey=AIzaSyAzPqhZFKAyfQDeN4DGGjI9VCTEBe_mLc4&continueUrl=https%3A%2F%2Flinks.example.com%3Flink%3Dhttps%3A%2F%2Flinks.example.com%2Fauth%3Femail%253Dtestmail12%40gmail.com%26apn%3Dcom.example.android%26amv%26ibi%3Dcom.example.ios%26ifl%3Dhttps%3A%2F%2Flinks.example.com%2Fauth%3Femail%253Dtestmail12%40gmail.com&lang=fr
  • 你看到有什么不对或遗漏的吗?操作完成后会阻止移动应用程序重定向的东西?
  • 我应该如何处理 continueUrl参数被重定向到应用程序?它是在某些事件后自动完成,还是应该由开发人员编写代码来“推送”包含此链接的新网页,它会自动看到该链接不是要在网页中处理的链接,从而重定向到移动应用程序?

非常感谢您对它如何工作的任何解释!

最佳答案

我终于明白这是怎么回事了:

continueUrl 必须是用于在移动应用程序中处理的那个,所以如果您使用:

url: 'https://links.example.com/auth?email=$email',

这意味着您必须在 firebase 控制台中创建一个动态链接前缀 URL:https://links.example.com/auth

您还必须按照问题中的说明将其添加到您的 iOS Info.plist 文件中。

此外,当您使用自定义域时,您需要按照文档中的说明确保 URL 前缀和域不同,例如:

https://link.example.com/?link=https://example.com/my-resource

而不是:

https://example.com/?link=https://example.com/my-resource

这意味着通过使用https://links.example.com/auth作为URL前缀,您需要使用另一个域来处理链接。

在我的例子中,我是这样构建 url 的:

https://links.example.com/?link=https://redirect.example.com/auth

并添加 https://redirect.example.com/auth 作为 URL 前缀。这可以防止 example.com 在托管级别和 links.example.com 之间的冲突,避免链接域名和 Url 前缀相同。

此外,不要忘记在 Firebase 控制台的 Firebase 身份验证登录方法中将新的动态链接域添加为 白名单 域,否则您将获得 domain-denied 错误。

希望这能帮助其他人更好地理解它是如何工作的。

关于firebase - 了解用于身份验证的 Firebase 动态链接中的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71602054/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com