如何为无法登录的Firebase用户取消注册/重置TOTP双因素认证?
恢复丢失TOTP认证器的用户登录权限
针对Firebase Auth平台下的用户,可通过以下几种方式移除用户的TOTP双因素认证,恢复登录权限:
方法1:使用Firebase Admin SDK(Python)直接更新用户
不要尝试修改user._data中的私有字段,使用官方提供的auth.update_user方法即可清空用户的MFA enrollment:
from firebase_admin import auth # 替换为目标用户的UID target_uid = "your-user-uid" # 清空所有MFA认证项 auth.update_user( target_uid, mfa_enrollments=[] )
执行后,用户再次登录时将无需输入TOTP验证码。
方法2:调用Firebase Auth Admin REST API
若SDK调用受限,可直接使用Admin端REST API,通过服务账号令牌授权操作:
- 先通过服务账号生成有效的访问令牌(可使用gcloud CLI或
google-authPython库生成) - 发送POST请求到接口:
https://identitytoolkit.googleapis.com/v2/accounts/{用户UID}:setMfaEnrollments - 请求体设置
mfaEnrollments为空数组,示例请求(curl):
curl -X POST \ 'https://identitytoolkit.googleapis.com/v2/accounts/USER_UID:setMfaEnrollments?key=你的项目API密钥' \ -H 'Authorization: Bearer 服务账号访问令牌' \ -H 'Content-Type: application/json' \ -d '{ "mfaEnrollments": [] }'
方法3:Firebase控制台手动操作
如果涉及用户数量较少,可直接在控制台完成:
- 登录Firebase控制台,进入Authentication > Users页面
- 找到目标用户,点击右侧的编辑按钮
- 在Multi-factor authentication板块,移除对应的TOTP认证记录
说明
- 你之前尝试的
accounts/mfaEnrollment:withdraw属于用户端API,必须携带用户的idToken才能调用,因此管理员无法使用该接口操作 user._data是SDK返回的本地数据副本,直接修改不会同步到服务器,必须使用官方提供的更新接口
内容的提问来源于stack exchange,提问作者Stay Funky
相关产品推荐
相关产品推荐

