我正在尝试在 AuthO 弹出窗口上显示我的网站名称。 Facebook、Twitter 或 GitHub 身份验证没有问题。但 Google 的弹出窗口不断显示“登录以继续访问 projectName.firebase.com”,而不是“example.com”。 我的意思是它显示 firebase 的默认域而不是自定义域。
即使我将显示名称更改为
console.developers.google.com
中的某个自定义名称。
在最新版本的 Firebase 用户指南中,他们解释了如何解决此问题,方法是将
authDomain
初始化属性指向您的域,并进行一些其他准备工作:https://firebase.google.com/docs/auth/web /google-signin#自定义用于 google-sign-in 的重定向域
- 为您的自定义域创建一条 CNAME 记录,该记录指向 firebaseapp.com 上项目的子域:
auth.custom.domain.com CNAME my-app-12345.firebaseapp.com
- 将您的自定义域添加到 Firebase 控制台中的授权域列表中:
。auth.custom.domain.com
- 在 Google 开发者控制台或 OAuth 设置页面中,将重定向页面的 URL 列入白名单,该 URL 可在您的自定义域中访问:https://auth.custom.domain.com/__/auth/handler。
- 初始化 JavaScript 库时,使用
字段指定您的自定义域authDomain
更新:说明中缺少的一个重要细节是必须为 Firebase 托管配置自定义身份验证域(即将其添加到 Firebase 控制台上用于托管的自定义域列表中)。否则,您将收到证书不匹配错误,正如 @AmritanshSinghal 正确指出的那样。
好的,对于那些遵循这些说明并遇到问题的人,我还有另外两条建议。
- 在 Google 开发者控制台或 OAuth 设置页面中,将重定向页面的 URL 列入白名单,该 URL 可在您的自定义域中访问:https://auth.custom.domain.com/__/auth/handler。
完成所有这些操作后,您将收到 CERT 失败信息。按照此 stackoverflow 问题上的说明进行操作,等待几个小时,一切都会神奇地工作!
祝你好运!
对我来说,尝试从多个答案和回复中收集步骤有点令人困惑,所以我将快速简单地总结对我有用的方法。
我的堆栈:
继续步骤:
选择用于 Google 弹出窗口的域,为了示例起见,我将简单地使用
auth.example.com
。该域将为用户显示为“example.com”,而不是 Firebase 项目默认域。此外,此域作业是将请求重定向到 Firebase 身份验证 URL。
激活 Firebase 托管(即使您不使用它来托管应用程序)
在 Firebase 托管中添加并验证域:
在 Firebase 托管中,按
Add custom domain
,然后输入您的域名
在步骤 1
(auth.example.com
) 中选择
不要勾选重定向选项并单击继续
现在您需要验证新自定义域的所有权并根据 Firebase 请求的记录更新您的记录。另外,如果您使用的是 Cloudflare,请确保在此步骤中禁用代理,然后单击“验证”(可能需要几分钟)。
将您的域添加为授权重定向 URI 之一。
APIs & Services
仪表板,链接Credentials
-> 从OAuth 2.0 Client IDs
Authorized redirect URIs
部分下添加您的域名,其架构为:https://auth.example.com/__/auth/handler
,然后单击保存将您的域添加到 Firebase 身份验证允许的域中。
Authentication
部分,然后单击Settings
Authorized Domains
并添加您的域名:auth.example.com
一旦自定义域认证在 Firebase 托管页面上获得批准,请更新 CNAME 以指向您的 Firebase 应用程序域,如下所示:
auth.example.com
-> example1234.firebaseapp.com
更新您的代码以支持此新更改。设置 firebaseApp 时,在 authDomain 属性中提供新的身份验证域,如下所示:
import { initializeApp } from "firebase/app"; const firebaseApp = initializeApp({ apiKey: "", authDomain: "auth.example.com", projectId: "", storageBucket: "", messagingSenderId: "", appId:"" , measurementId:"" , });