在登录时显示自定义域名

本文档介绍如何自定义 Identity Platform 身份验证处理程序,以便用户登录时看到您的网域。

了解默认身份验证处理程序

在您为项目启用 Identity Platform 时,系统会自动创建由 Firebase 托管提供支持的唯一子网域。网域的格式为 https://[PROJECT-ID].firebaseapp.com。默认情况下,Identity Platform 会使用此网域来处理所有 OAuth、OIDC 和 SAML 登录重定向。

使用默认网域具有多项优势:

  • 设置更简单

  • 将多个域名用于相同的联合提供商

  • 在不同的服务和网域之间共享一个回调网址

  • 使用每个应用仅支持一个回调网址的提供商

默认处理程序的缺点是,用户会在登录时短暂看到 https://[PROJECT-ID].firebaseapp.com 网址。

自定义身份验证处理程序

要替换默认处理程序并提供您自己的处理程序,请执行以下操作:

  1. 将您的项目连接到自定义网域。您需要使用 Firebase 控制台完成这些步骤;系统不支持使用 Google Cloud CLI 或 Google Cloud 控制台完成这些步骤。

  2. 转到 Google Cloud 控制台中的身份提供方页面,然后选择您的 SAML 提供方。转到“身份提供商”页面

  3. 将自定义网域添加到已获授权的网域列表中。

  4. 向您的身份提供商更新回调网址,以使用自定义网域,而不是默认网域。例如,将 https://myproject.firebaseapp.com/__/auth/handler 更改为 https://auth.mycustomdomain.com/__/auth/handler

  5. 点击保存

更新 Client SDK 配置

Web

通常,您可以从 Google Cloud 控制台复制客户端 SDK 的初始化代码。如果您自定义身份验证处理程序,则需要将 authDomain 字段更新为您的自定义网域:

Web 版本 9

import { initializeApp } from "firebase/app";

const firebaseConfig = {
  apiKey: "...",
  // By default, authDomain is '[YOUR_APP].firebaseapp.com'.
  // You may replace it with a custom domain.
  authDomain: '[YOUR_CUSTOM_DOMAIN]'
};
const firebaseApp = initializeApp(firebaseConfig);

Web 版本 8

firebase.initializeApp({
  apiKey: '...',
  // By default, authDomain is '[YOUR_APP].firebaseapp.com'.
  // You may replace it with a custom domain.
  authDomain: '[YOUR_CUSTOM_DOMAIN]'
});

Android 和 iOS

如需自定义身份验证处理程序,请使用以下代码:

Java

FirebaseAuth.getInstance().setCustomAuthDomain("[YOUR_CUSTOM_DOMAIN]");

Kotlin+KTX

Firebase.auth.setCustomAuthDomain("[YOUR_CUSTOM_DOMAIN]")

Swift

let auth = Auth.auth()
auth.customAuthDomain = "[YOUR_CUSTOM_DOMAIN]"

Objective-C

FIRAuth *auth = [FIRAuth auth];
auth.customAuthDomain("[YOUR_CUSTOM_DOMAIN]");