简体   繁体   English

验证 firebase id 令牌问题

[英]Verify firebase id token Issue

When I run the code , it says -当我运行代码时,它说 -

###
ReferenceError: getAuth is not defined <br/>
    at E:\Web Development\burj-al-arab-server\index.js:53:1
    at Layer.handle [as handle_request] (E:\Web Development\burj-al-arab-server\node_modules\express\lib\router\layer.js:95:5)
    at next (E:\Web Development\burj-al-arab-server\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (E:\Web Development\burj-al-arab-server\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (E:\Web Development\burj-al-arab-server\node_modules\express\lib\router\layer.js:95:5)
    at E:\Web Development\burj-al-arab-server\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (E:\Web Development\burj-al-arab-server\node_modules\express\lib\router\index.js:335:12)
    at next (E:\Web Development\burj-al-arab-server\node_modules\express\lib\router\index.js:275:10)
    at jsonParser (E:\Web Development\burj-al-arab-server\node_modules\body-parser\lib\types\json.js:110:7)
    at Layer.handle [as handle_request] (E:\Web Development\burj-al-arab-server\node_modules\express\lib\router\layer.js:95:5)
###

added these code on server side.在服务器端添加了这些代码。 **Node.js ** **Node.js **


app.get('/allbookings',(req, res) =>{
    console.log(req.query.authorization)

// idToken comes from the client app
getAuth()
  .verifyIdToken(idToken)
  .then((decodedToken) => {
    const uid = decodedToken.uid;
  
    // ...
  })
  .catch((error) => {
    // Handle error
  });

     collection.find({email : req.query.email})
     .toArray((err, documents) =>{
      res.send(documents)
    })
})

It seems you are using Firebase Client SDK on server side but the verifyIdToken() method exists in Firebase Admin SDK .您似乎在服务器端使用 Firebase Client SDK,但Firebase Admin SDK 中存在verifyIdToken()方法。 First install the Admin SDK by npm install firebase-admin and then try the following:首先通过npm install firebase-admin安装 Admin SDK,然后尝试以下操作:

const admin = require("firebase-admin")

admin.initializeApp()

app.get('/allbookings', (req, res) => {
  console.log(req.query.authorization)

  // idToken comes from the client app
  admin.auth().verifyIdToken(idToken).then((decodedToken) => {
    const uid = decodedToken.uid;
  
    // ...
  })
  .catch((error) => {
    // Handle error
  });
})

If you are not using Cloud functions and running this Express server on your server then you might need a service account to initialize the Admin SDK.如果您没有使用 Cloud 功能并在您的服务器上运行此 Express 服务器,那么您可能需要一个服务帐户来初始化 Admin SDK。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM