Firebase中的自定义authDomain

Firebase中的自定义authDomain,firebase,firebase-authentication,Firebase,Firebase Authentication,我正在使用Firebase的内置oAuth功能进行水疗 这个SPA属于它自己的领域,比如说foobar.com 问题是,当oauth弹出窗口打开时,使用的是旧的foobar.firebaseapp.com域,而不是新的foobar.com域 我的名字是这样的 firebase.initializeApp({ apiKey: '...', authDomain: 'foobar.firebaseapp.com', databaseURL: 'https://foobar.firebas

我正在使用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的方法?

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

或者,您可以在域的子域(例如
auth.foobar.com
)上为Firebase主机设置自定义域,然后您可以使用
auth.foobar.com
作为您的
authDomain


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

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

或者,您可以在域的子域(例如
auth.foobar.com
)上为Firebase主机设置自定义域,然后您可以使用
auth.foobar.com
作为您的
authDomain

当前不支持使用非Firebase托管域作为您的
authDomain

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

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

我在其中看到了许多答案,指出需要设置自定义域授权、检查HTTP/S URI方案等(我遵循了其中的大部分,包括确保我的自定义域在Firebase托管、Firebase身份验证,甚至在GCP身份平台“授权域”设置()下获得授权。也就是说,链接的答案似乎都不是特定于Firebase身份验证的,因此以下是我的经验,FWIW:

“使用谷歌登录”弹出窗口显示以下
授权错误
消息:

错误400:重定向\u uri\u不匹配
请求中的重定向URI,https://.firebaseapp.com/__/auth/handler,与为OAuth客户端授权的URI不匹配。要更新授权的重定向URI,请访问:https://console.developers.google.com/apis/credentials/oauthclient/${your_client_id}?project=${your_project_number}
经过大量挖掘,我意识到我需要将“Authorized redirect URIs”的值设置为
https://.mydomain.org/__/auth/handler
,引用我的自定义域。请参阅以下附件

这对我来说不是很明显,但我还必须对由谷歌服务自动生成的OAuth 2.0客户端ID进行上述设置。此后,我最初创建了一个新的客户端ID,但最终没有产生任何影响。

我看到了很多答案,指出需要设置自定义域授权,检查HTTP/S URI方案等(我遵循了大多数方案,包括确保我的自定义域在Firebase托管、Firebase身份验证甚至GCP Identity Platform“authorized Domains”设置()下获得授权。也就是说,链接的答案似乎都不是Firebase Auth特有的,因此我的经验如下,FWIW:

“使用谷歌登录”弹出窗口显示以下
授权错误
消息:

错误400:重定向\u uri\u不匹配
请求中的重定向URI,https://.firebaseapp.com/__/auth/handler,与为OAuth客户端授权的URI不匹配。要更新授权的重定向URI,请访问:https://console.developers.google.com/apis/credentials/oauthclient/${your_client_id}?project=${your_project_number}
经过大量挖掘,我意识到我需要将“Authorized redirect URIs”的值设置为
https://.mydomain.org/__/auth/handler
,引用我的自定义域。请参阅以下附件


这对我来说不是很明显,但我还必须对由谷歌服务自动生成的OAuth 2.0客户端ID进行上述设置。随后,我最初创建了一个新的客户端ID,但最终没有产生任何影响。

Hi Michael,我的自定义域位于firebase主机上,但它仍然存在此问题。有什么问题吗我可以如何进一步调试?我建议为您的特定站点获取一些特定的调试帮助。这对我来说很有效,但事实并非如此,我能够使用另一个提供商托管的
authDomain
。请参阅@kip2 Belowi Michael的答案,我的自定义域位于firebase托管上,但它仍然存在此问题。是否存在此问题有什么方法可以进一步调试?我建议为您的特定站点获取一些特定的调试帮助。这对我来说很有效。事实并非如此,我能够使用由另一个提供商托管的
authDomain
非常好。请看下面@kip2的答案这对我有效这对我有效你为我节省了很多时间!你为我节省了很多时间时间
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}