使用自定义Token在Firebase登录时遇auth/invalid-custom-token错误
解决Firebase signInWithCustomToken返回auth/invalid-custom-token错误
问题代码
generateFirebaseSignInToken() .then((data) => { const customToken = data.data.generateFirebaseSingInToken; const auth = getAuth(); signInWithCustomToken(auth,customToken) .then((userCredential) => { const user = userCredential.user; console.log("User successfully signed in:", user); }) .catch((error) => { console.error("Error signing in:", error); }); }) .catch((error) => { console.error("Error generating token:", error); });
登录请求Payload
{ "token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjYzODBlZjEyZjk1ZjkxNmNhZDdhNGNlMzg4ZDJjMmMzYzIzMDJmZGUiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vYXJjZWxpay1zdGF.........", "returnSecureToken": true }
控制台报错
Error signing in: FirebaseError: Firebase: Error (auth/invalid-custom-token).
排查与解决步骤
- 修正变量拼写错误:代码中
data.data.generateFirebaseSingInToken存在拼写错误,应该是generateFirebaseSignInToken(注意是Sign而非Sing)。这个错误会导致获取到的customToken值错误或未定义,直接触发无效Token报错。 - 验证Token签名有效性:确保自定义Token是通过Firebase Admin SDK生成的,且使用了对应项目的合法服务账号密钥。即使解码后能看到正确项目ID,签名不匹配仍会被判定为无效。
- 检查Token有效期:自定义Token默认有效期为1小时,若生成后超过时限会失效,需重新生成。
- 确认项目ID完全匹配:前端初始化Firebase时使用的项目ID,必须和生成自定义Token的后端项目ID完全一致,包括大小写和拼写。
- 确保Token格式完整:获取到的
customToken必须是完整的JWT字符串,不能包含额外的空格、换行符或其他字符。
内容的提问来源于stack exchange,提问作者Mustafa Kerem CANSEV
相关产品推荐
相关产品推荐

