电子邮件链接身份验证之前依赖于 Firebase Dynamic Links,该服务将于 2025 年 8 月 25 日关停。我们已在 Firebase Authentication Android SDK 版本 23.2.0+ 和 Firebase BoM 版本 33.9.0+ 中发布了替代解决方案。如果您的应用使用旧样式链接,并且您希望使用替代方法来迁移应用,请参阅使用电子邮件链接进行 Firebase 身份验证 (Android),以使用基于 Firebase Hosting 的新系统。
此外,如果您使用 Firebase Authentication Android SDK 20.0.0 以下版本(或 Firebase BoM 26.0.0 以下版本)管理 OAuth 流程(借助 Firebase Authentication),则需要更新到最新的 Authentication SDK 或 BoM 版本(Authentication v20.0.0+ 或 BoM v26.0.0+),以便继续在 Firebase Authentication 中管理 OAuth 流程。
将关联的 Firebase Dynamic Links 网域迁移到 Firebase Hosting 网域
从现在开始,Firebase Authentication 将使用项目的 Firebase Hosting 默认网域来为移动应用中的电子邮件链接和其他带外链接操作创建链接,而不是使用 Firebase Dynamic Links 网域。这意味着,您的应用也需要进行更新,以使用此默认网域作为与指向移动应用的电子邮件身份验证链接相关联的网域。
您可以按照使用电子邮件链接进行 Firebase 身份验证 (Android) 中的说明更新您的移动应用链接,以使用新的自动预配 Firebase Hosting 默认网域。
请按照以下说明处理来自新网域的链接,并指示 Firebase Authentication 从现在开始使用新网域生成移动应用链接。
如果您想继续使用任何自定义 Firebase Hosting 网域,甚至是自定义 Firebase Dynamic Links 网域作为新的关联网域,请按照您要使用的网域对应的步骤操作。请注意,完成下一部分中的说明后,Firebase Dynamic Links 自定义网域上的深层链接功能将被移除;只有网域本身会保留,用于创建电子邮件链接。
将您的 Android 应用配置为处理 Firebase Hosting 链接
- 为了可以在 Android 应用中处理这些链接,需要在 Firebase 控制台项目设置中指定应用的软件包名称。此外,您还需要提供应用证书的 SHA-1 和 SHA-256。
如果您希望这些 Firebase Hosting 链接重定向到特定 activity,则需要在
AndroidManifest.xml
文件中配置 intent 过滤器。该 intent 过滤器应能捕获您的网域的 Firebase Hosting 链接。在AndroidManifest.xml
中:<intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="https" android:host="PROJECT_ID.firebaseapp.com or a custom hosting domain" android:pathPrefix="/__/auth/links" /> </intent-filter>
当用户打开包含“/__/auth/links”路径以及您指定的架构和主机的托管链接时,您的应用将会启动包含此 intent 过滤器的 activity 来处理该链接。
将您的项目配置为使用新链接
当您准备好处理新网域链接时,可以使用 Firebase Admin SDK 更新您希望以何种方式生成电子邮件链接,并指示我们的后端开始使用新的 Firebase Hosting 网域生成链接。
const updateRequest = { mobileLinksConfig: { domain: 'HOSTING_DOMAIN' } } const updateProjectConfig = () => { projectConfigManager.updateProjectConfig(updateRequest) .then((response) => { // updated project config }).catch((error) => { console.log('Error updating the project:', error); }); }
发送和兑换电子邮件链接
如上所述,发送电子邮件登录链接。最终用户点击链接后,系统会将其重定向到应用(如果已安装)以完成登录。
自定义移动链接
您可以使用自定义 Firebase Hosting 网域,也可以重复使用自定义 Firebase Dynamic Links 网域作为新的移动链接网域。
使用自定义 Firebase Hosting 网域
- 按照 Firebase Hosting 指南设置自定义网域。
- 将您的 Android 应用配置为处理 Firebase Hosting 链接。(请参阅上一部分中的说明)。
- 向用户的电子邮件地址发送身份验证链接,其中包含将自定义网域作为
linkDomain
的已更新ActionCodeSettings
对象。
重复使用自定义 Firebase Dynamic Links 网域
- 您可以将任何 Firebase Dynamic Links 网域用作自定义网域。不过,系统将不再支持任何 Firebase Dynamic Links 功能(例如,如果用户的设备上未安装应用,则无法将用户重定向到应用商店)。
- 将您的 Android 应用配置为处理 Firebase Hosting 链接(请参阅上文的上一部分中的说明)。
- 向用户的电子邮件地址发送身份验证链接,其中包含将自定义网域作为
linkDomain
的已更新ActionCodeSettings
对象。