Firebase中的自定义authDomain

时间:2016-11-29 01:05:55

标签: firebase firebase-authentication

我正在使用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网址?

3 个答案:

答案 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=\ )上获得授权。也就是说,所有链接的答案似乎都不特定于Firebase验证,这是我的经验,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://<my-auth-subdomain>.mydomain.org/__/auth/handler,并引用我的自定义域。请参阅以下附件。

OAuth Client ID settings Google APIs Credentials settings

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