我正在使用Firebase内置的oAuth功能用于SPA。
此SPA属于其自己的域名,例如foobar.com
问题是,当打开oauth弹出窗口时,会使用旧的foobar.firebaseapp.com
域,而不是新的foobar.com
域
我的init看起来像这样
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网址?
答案 0 :(得分:6)
authDomain
依赖于该域上可用的特定脚本。如果您的单页应用程序托管在具有自定义域的Firebase托管中,您将能够将该域用作authDomain
。
或者,您可以在域的子域上为Firebase托管设置自定义域,例如auth.foobar.com
然后您就可以使用auth.foobar.com
作为authDomain
。
目前不支持将非Firebase托管域用作authDomain
。
答案 1 :(得分:1)
转到身份验证->登录方法,您将自定义domian放在“授权域”部分下
答案 2 :(得分:1)
我在Google OAuth 2 authorization - Error: redirect_uri_mismatch中看到了很多答案,指出需要设置自定义域授权,检查HTTP / S URI方案等(我遵循了大多数方法,包括确保我的自定义域是在Firebase托管,Firebase身份验证甚至在GCP身份平台的“授权域”设置(https://console.cloud.google.com/customer-identity/settings?project=\
以下“ 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://<my-auth-subdomain>.mydomain.org/__/auth/handler
,并引用我的自定义域。请参阅以下附件。
这对我来说不是立即显而易见的,但是我还必须对Google服务自动生成的OAuth 2.0客户端ID进行上述设置。在此related answer之后,我最初创建了一个新的客户端ID,但最终并没有任何改变。