我一直在为一个自由项目使用连接到firebase的Next JS 13构建一个应用程序,并使用来自react-firebaseeui/StyledFirebaseAuth组件的StyledFirebaseAuth来处理我的身份验证。在尝试将我的应用迁移到新的firebase项目进行生产后,我遇到了一个问题,其中StyledFirebaseAuth将始终迫使我关闭帐户注册流程,即使我使用以前创建的帐户的电子邮件地址。这两个项目之间没有区别,只是生产Firebase项目连接到Google Cloud项目,而开发项目没有。
在深入研究了StyledFirebaseAuth组件在连接到firebase开发项目和生产项目时发送的请求后,我注意到来自GoogleidentityToolkit API的验证AuthUri方法没有返回相同的响应,尽管发送了完全相同的有效负载。当连接到开发项目时,它会响应以下内容:
{
"kind": "identitytoolkit#CreateAuthUriResponse",
"allProviders": [
"password"
],
"registered": true,
"sessionId": "wR0zw4TO5qPpIgvxrqY_bANyP4s",
"signinMethods": [
"password"
]
}
当连接到生产项目时,它会响应:
{
"kind": "identitytoolkit#CreateAuthUriResponse",
"sessionId": "wR0zw4TO5qPpIgvxrqY_bANyP4s"
}
同样,两个请求的有效负载看起来完全相同:
Dev Payload
{identifier: "[email protected]", continueUri: "http://localhost:3000/"}
生产负载
{identifier: "[email protected]", continueUri: "http://localhost:3000/"}
我还附加了两个项目的firebase配置对象,以防我遗漏了一些东西:
开发配置
let firebaseConfig = {
apiKey: "AIzaSyCefhN_WDoVg78rqE6xvsxZ2mhog2R9q58",
authDomain: "wattleartcreations.firebaseapp.com",
projectId: "wattleartcreations",
storageBucket: "wattleartcreations.appspot.com",
messagingSenderId: "947361534354",
appId: "1:947361534354:web:cf323c4a5c771ad1ceb14b",
measurementId: "G-X3LFHN1S9C"
};
生产配置
const firebaseConfig = {
apiKey: "AIzaSyDVe5PNLzSS0-cNH-lJiecKAuo1PZ6JcNs",
authDomain: "rare-journey-397519.firebaseapp.com",
projectId: "rare-journey-397519",
storageBucket: "rare-journey-397519.appspot.com",
messagingSenderId: "905320577101",
appId: "1:905320577101:web:40a93e1d25e7a9cff20404",
measurementId: "G-X3LFHN1S9C"
};
我已经检查过了,以确保所有正确的网址都已经在firebase和谷歌云项目中列入白名单,并且在项目中启用了适当的auth提供程序。我猜是因为我无法找到我发送的电子邮件地址,但是我没有从请求中得到任何错误响应。我不明白为什么API在两个项目之间返回不同的响应。边注,如果我调用firebase auth函数signinWithEmailAndPassword与电子邮件和密码硬编码,它工作得很好,只有当使用StyledFirebaseAuth组件时,我遇到了这个问题。
有人能给我一些建议来解决这个问题吗?
1条答案
按热度按时间wljmcqd81#
如果您在2023年9月15日或之后创建了项目,则默认情况下会启用电子邮件枚举保护:
https://cloud.google.com/identity-platform/docs/admin/email-enumeration-protection
要禁用电子邮件枚举保护,请执行以下步骤:
在Google Cloud控制台中,使用gcloud auth print-access-token命令打印项目ID的访问令牌:
使用Identity Toolkit API禁用电子邮件枚举保护: