Firebase 通过 Firebase-Admin 错误验证 tokenToken

问题描述 投票:0回答:4

嘿,我正在尝试从 Firebase 管理员验证用户令牌,然后根据 Mongodb 中的该信息创建一个用户,但每次当我请求此端点时,我都会收到以下错误:

 D:\React Course\Ecommerce\server\node_modules\firebase-admin\lib\auth\base-auth.js:421
        if (properties?.providerToLink) {
                       ^

SyntaxError: Invalid or unexpected token
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)

这是我验证 userToken 的代码

const express=require("express");
import admin  from "firebase-admin";

var serviceAccount = require("../FirebaseAdmin/Servicekey.json");

admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
  });

export const authcheck=async(req,res,next)=>{
try{ 
    const firebaseuser=await admin.auth().verifyIdToken(req.headers.authcheck);
    console.log(firebaseuser);
}catch(error){
    console.log(error);
}
}

任何人都可以帮我解决这个问题我尝试了一切可能的方法 这是 req.headers 的 Console.log

这是来自客户端,我向我的终点请求

const createandupdateuser=async(authcheck)=>{
  await axios.post("http://localhost:5000/api/create-and-update-user",{},{
    headers:{
      authcheck,
    }
  })
  }
const handlesubmit=async(e)=>{
e.preventDefault();
try{
    setloading(true);
    const result=await signInWithEmailAndPassword(auth,email,password);
    const {user}=result;
    const Idtoken=await user.getIdTokenResult();
    createandupdateuser(Idtoken.token);
    dispatch({
      type:"LOGGED_IN_USER",
      payload:{
        email:user.email,
        token:Idtoken.token
      }
    })
    navigate("/");
}catch(error){
console.log(error)
swal(error.message);
setloading(false);
}
}

这是调用的 authcheck 函数

const express=require("express");
const router=express.Router();
import {createandupdateuser} from "../controllers/auth"
const {authcheck} =require("../middlewares/index");

router.post("/create-and-update-user",authcheck,createandupdateuser);

module.exports=router;
node.js firebase-authentication firebase-admin
4个回答
1
投票

更新......我通过降级 Firebase-admin 版本解决了我的问题

npm i [email protected]

0
投票

您的代码中可能存在隐藏字符。复制您的代码并将其粘贴到纯文本编辑器中并删除所有垃圾文本。

如果您使用的是可视化代码,您可以打开“渲染空白”。

CTRL + SHIFT + P / CMD + SHIFT + P
并搜索“渲染空白”并将其打开


0
投票

嗨,我在部署到 vercel 函数时遇到了类似的问题

找不到模块“./token-generator” 需要堆栈:

  • /var/task/node_modules/firebase-admin/lib/auth/base-auth.js
  • /var/task/node_modules/firebase-admin/lib/auth/tenant-manager.js
  • /var/task/node_modules/firebase-admin/lib/auth/auth.js
  • /var/task/node_modules/firebase-admin/lib/app/firebase-namespace.js
  • /var/task/node_modules/firebase-admin/lib/default-namespace.js
  • /var/task/node_modules/firebase-admin/lib/index.js
  • /var/task/index.js
  • /var/task/___now_launcher.js
  • /var/runtime/index.mjs

我通过降级解决了这个问题 npm i [电子邮件受保护]


0
投票

我今天在使用 firebase-admin v11.x 和 v12.x 时遇到了同样的问题

恢复到 v10.3.0,我的代码可以正常工作,无需其他更改。

© www.soinside.com 2019 - 2024. All rights reserved.