如何在nodejs中创建没有服务帐户json的Firebase身份验证自定义令牌?

我想在不使用服务帐户 json 的情况下创建自定义令牌。尝试了以下配置项:https : //firebase.google.com/docs/auth/admin/create-custom-tokens#using_a_service_account_id


https://firebase.google.com/docs/auth/admin/create-custom-tokens#letting_the_admin_sdk_discover_a_service_account


并使用以下代码生成令牌


admin.auth().createCustomToken(uid)

  .then(function(customToken) {

    // Send token back to client

  })

  .catch(function(error) {

    console.log('Error creating custom token:', error);

  });

得到以下错误:


'未能确定服务帐户。确保使用服务帐户凭据初始化 SDK。或者,指定具有 iam.serviceAccounts.signBlob 权限的服务帐户。原始错误:错误:发出请求时出错:getaddrinfo ENOTFOUND 元数据元数据:80。错误代码:ENOTFOUND'


使用最新的“firebase-admin”npm 模块。



慕码人2483693
浏览 172回答 3
3回答

慕桂英546537

简短回答:您不能,sdk 密钥是对您的应用进行身份验证和授权以授予权限的唯一方法。长(不是那么长)答案:使用云函数,如果它在你的项目中,它会为你初始化它,所以你不必使用密钥来实例化sdk

皈依舞

您应该首先通过将您的服务帐户密钥(从 Firebase 下载)传递给凭据来初始化 admin。在调用 admin.auth() 之前使用此代码。var serviceAccount = require('./ServiceAccountKey.json')admin.initializeApp({    credential: admin.credential.cert(serviceAccount)});

人到中年有点甜

如果您的代码未在 GCP 的托管运行时中运行,则您必须提供服务帐号 JSON 文件或至少提供serviceAccountId应用选项。admin.initializeApp({  serviceAccountId: 'my-client-id@my-project-id.iam.gserviceaccount.com',});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript