ycc*_*eam 2 javascript firebase
我正在使用 Firebase 电子邮件和密码身份验证。
我可以在 Firebase 控制台中看到该用户,并且该用户可以登录和注销。
在我的代码中,我正在这样做:
const signInMethods = await fetchSignInMethodsForEmail(getAuth(), email);
Run Code Online (Sandbox Code Playgroud)
但是signInMethods是一个空数组(与预期相反['password'])。
知道为什么会发生这种情况吗?
预期行为: 返回的值fetchSignInMethodsForEmail应反映刚刚注册的用户可用的登录方法password。
实际行为:返回的值fetchSignInMethodsForEmail是一个空数组。
复制说明:
add-firebase-auth去分行结账
添加包含.env以下详细信息的文件:启用了电子邮件和密码登录的 Firebase 应用的 VITE_FIREBASE_APP_KEY=*** VITE_FIREBASE_MESSAGING_SENDER_ID=*** VITE_FIREBASE_PROJECT_ID=*** VITE_FIREBASE_APP_ID=*** (将 *** 替换为实际详细信息)
跑步npm i
跑步npm run dev
转到控制台中指定的地址查看 UI
输入电子邮件和密码并登录。
查看用户是否出现在 Firebase 控制台中
刷新应用程序以返回登录屏幕
auth.ts在文件第 10 行设置调试点。
使用相同的凭据登录
看到返回的值是一个空数组
从 9 月 15 日开始,所有新的 Firebase 项目默认启用电子邮件枚举保护。这实际上破坏了该fetchSignInMethodsForEmail方法。
createAuthUri根据文档:“在所有平台上调用REST API 或fetchSignInMethodsForEmail客户端 SDK 方法时,不再返回指定电子邮件地址的登录方法列表”。
有关更多详细信息,您可以查看完整文档。
为了使其再次工作,您必须禁用电子邮件枚举保护。为此,您应该通过运行以下命令来获取项目的访问令牌:
gcloud auth print-access-token --project=PROJECT_ID
然后按照文档中的详细说明提出补丁请求:
curl -X PATCH -d "{'emailPrivacyConfig':{'enableImprovedEmailPrivacy':false}}" \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' -H 'X-Goog-User-Project: PROJECT_ID' \
"https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/config?updateMask=emailPrivacyConfig"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
851 次 |
| 最近记录: |