NodeJS Flutter使用Firebase验证访问令牌

ukqbszuj  于 2023-05-06  发布在  Node.js
关注(0)|答案(1)|浏览(88)

我正在使用firebase身份验证来为登录的用户生成访问令牌,但我不知道如何在服务器端验证这一点。我正在测试它在Flutter,以确保它的工作,但这是一个两部分的问题:
1.如何在VS代码中测试Flutter访问令牌验证?这是我现在的代码(FirebaseAuth.instance里面没有verifyIdToken函数,所以我很困惑):

1.第二部分是我想验证我的Node JS服务器上的ID令牌-那么我必须打开哪些库,以及我可以使用的示例代码是什么?

更新基于以下Frank的回答:

这是我目前的代码,我不知道要导入什么,为什么它不工作:

const { initializeApp } = require('firebase-admin/app'); 
const app = initializeApp();
getAuth(app)
  .verifyIdToken("TOKEN")
  .then((decodedToken) => { 
    const uid = decodedToken.uid; console.log(uid); 
    // ... 
  })
  .catch((error) => { 
    print("ERROR") 
    // Handle error 
  });
bvjxkvbb

bvjxkvbb1#

虽然Firebase客户端SDK(例如您正在使用的Flutter)可以解码ID令牌,但它们没有内置的公共方法来验证此类令牌。这并不难添加,但在客户端代码中这是一个不常见的用例。
如果你想自己实现它,ID令牌是一个JWT -所以任何在Flutter中解码JWT的解决方案都可以工作。例如,请参见How to get the claims from a JWT in my Flutter Application
要验证Node.js中的ID令牌,请查看verifying an ID token上的Firebase文档,其中包含用于Node.js的Firebase Admin SDK的示例:

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

相关问题