Firebase 中的自定义 authDomain

Posted

技术标签:

【中文标题】Firebase 中的自定义 authDomain【英文标题】:Custom authDomain in Firebase 【发布时间】:2017-04-12 21:02:01 【问题描述】:

我正在为 SPA 使用 Firebase 的内置 oAuth 功能。

这个 SPA 在它自己的域上,比如foobar.com

问题是,当打开 oauth 弹出窗口时,使用的是旧的 foobar.firebaseapp.com 域,而不是新的 foobar.com

我的初始化看起来像这样

firebase.initializeApp(
  apiKey: '...',
  authDomain: 'foobar.firebaseapp.com',
  databaseURL: 'https://foobar.firebaseio.com',
  storageBucket: 'foobar.appspot.com',
  messagingSenderId: '123456'
)

我猜authDomain 可能与它有关,但如果我将其更改为foobar.com 我会收到错误:

 code: "auth/popup-closed-by-user", message: "The popup has been closed by the user before finalizing the operation."

简而言之,我是否缺少为 Firebase 自定义 oAuth url 的方法?

【问题讨论】:

这对我有用***.com/questions/37344066/… 【参考方案1】:

authDomain 依赖于该域上可用的特定脚本。如果您的单页应用托管在具有自定义域的 Firebase 托管上,您将能够将该域用作 authDomain

或者,您可以在您的域的子域上为 Firebase 托管设置一个自定义域,例如auth.foobar.com 然后你就可以使用auth.foobar.com 作为你的authDomain

目前不支持将非 Firebase 托管域用作您的 authDomain

【讨论】:

嗨迈克尔,我的自定义域在 firebase 托管,但它仍然存在这个问题。有什么方法可以进一步调试吗? 我建议 reaching out to support 为您的特定站点获取一些特定的调试帮助。 这对我有用***.com/questions/37344066/… 事实并非如此,我完全可以使用由另一个提供商托管的authDomain。请参阅下面@kip2 的答案【参考方案2】:

我在Google OAuth 2 authorization - Error: redirect_uri_mismatch 中看到了很多答案,指出需要设置自定义域授权、检查 HTTP/S URI 方案等(我已遵循其中的大部分,包括确保我的自定义域在Firebase 托管、Firebase 身份验证,甚至在 GCP 身份平台“授权域”设置 (https://console.cloud.google.com/customer-identity/settings?project=\)。也就是说,链接的答案似乎都不是特定于 Firebase Auth 所以这里是我的经验,FWIW:

以下Authorisation Error 消息显示在“使用 Google 登录”弹出窗口中:

Error 400: redirect_uri_mismatch
The redirect URI in the request, https://<project-id>.firebaseapp.com/__/auth/handler, does not match the ones authorized for the OAuth client. To update the authorized redirect URIs, visit: https://console.developers.google.com/apis/credentials/oauthclient/$your_client_id?project=$your_project_number

经过大量挖掘,我意识到我需要将“授权重定向 URI”的值设置为 https://&lt;my-auth-subdomain&gt;.mydomain.org/__/auth/handler,引用我的自定义域。请参阅以下附件。

这对我来说并不是很明显,但我还必须在由 Google 服务自动生成的 OAuth 2.0 客户端 ID 上进行上述设置。在related answer 之后,我最初创建了一个新的客户端 ID,但最终没有任何区别。

【讨论】:

你为我节省了很多时间!【参考方案3】:

转到身份验证 --> 登录方法,您会将自定义域放在授权域部分下

【讨论】:

以上是关于Firebase 中的自定义 authDomain的主要内容,如果未能解决你的问题,请参考以下文章

反应中的firebase出口问题[重复]

如何获取应用了多个维度的自定义 Firebase 事件的唯一用户数?

将从 Fabric 创建的自定义事件迁移到 Firebase?

获取 apiKey 到 firebase

从 firebase 中删除创建的动态链接并使用 firebase 控制台创建新的自定义 URL

为啥 Firebase 分析的自定义事件未显示在仪表板上?