NodeJS 中的 Firebase 自定义令牌(fastify 框架)

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

我想从我的 fastify 服务器创建一个自定义令牌。

现在,我正在阅读以下非常糟糕的指南: https://firebase.google.com/docs/auth/admin/create-custom-tokens

他们有这个(我认为不完整)示例:

const uid = 'some-uid';

getAuth()
  .createCustomToken(uid)
  .then((customToken) => {
    // Send token back to client
  })
  .catch((error) => {
    console.log('Error creating custom token:', error);
  });

我首先不明白的是 getAuth() 方法从何而来。官方文档中的解释为零。 我的猜测是它来自 firebase-admin。但是我不明白如何使用它。

与上述相关的第二个无意义的事情是当我在 firebase 控制台中创建一个项目时,我得到了以下内容:

// Import the functions you need from the SDKs you need
import { initializeApp } from "firebase/app";
import { getAnalytics } from "firebase/analytics";
// TODO: Add SDKs for Firebase products that you want to use
// https://firebase.google.com/docs/web/setup#available-libraries

// Your web app's Firebase configuration
// For Firebase JS SDK v7.20.0 and later, measurementId is optional
const firebaseConfig = {
  apiKey: "api_key",
  authDomain: "xyz",
  projectId: "xyz",
  storageBucket: "xyz",
  messagingSenderId: "000",
  appId: "0xyz",
  measurementId: "xyz0"
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);
const analytics = getAnalytics(app);

但是我不明白如何在 firebase-admin 中使用它。

即使我做了以下事情:

const admin = require('firebase-admin');
admin.initializeApp(firebaseConfig);

我收到消息:

错误信息:{ 代码:'身份验证/无效凭证', message: '无法确定服务帐户。确保使用服务帐户凭据初始化 SDK。或者 使用 iam.serviceAccounts.signBlob 指定服务帐户 允许。原始错误:错误:发出请求时出错: getaddrinfo ENOTFOUND 元数据。错误代码:ENOTFOUND' },
代码前缀:'auth'

任何帮助将不胜感激,因为由于 firebase 文档的不完整,我浪费了很多时间。

javascript firebase-authentication firebase-admin
1个回答
0
投票

您混合了客户端 SDK (

firebase
) 和服务器端管理 SDK (
firebase-admin
),这不是一个好主意。

要创建自定义令牌,您(仅)需要 Admin SDK,因此请摆脱其他

firebase
依赖项。然后按照文档中所述初始化 SDK,这意味着您为其提供管理凭据(以此处所示的方式之一),使其能够(除其他外)创建自定义令牌

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