我想创建一个不使用服务帐户json的自定义令牌。 尝试了以下配置项: https://firebase.google.com/docs/auth/admin/create-custom-tokens#using_a_service_account_id
并使用以下代码生成令牌
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模块。
请忠告。
答案 0 :(得分:0)
简短答案:您不能,sdk密钥是对应用进行身份验证和授权以授予权限的唯一方法。
长(不是很长)的答案:使用云功能,如果它在您的项目中,它将为您初始化它,因此您不必使用键来实例化sdk
答案 1 :(得分:0)
如果您的代码未在Google Cloud的托管运行时中运行,则必须提供服务帐户JSON文件,或者至少提供serviceAccountId
应用程序选项。
admin.initializeApp({
serviceAccountId: 'my-client-id@my-project-id.iam.gserviceaccount.com',
});
答案 2 :(得分:0)
您应该首先通过将您的服务帐户密钥(从 Firebase 下载)传递给凭据来初始化 admin。在调用 admin.auth() 之前使用此代码。
var serviceAccount = require('./ServiceAccountKey.json')
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});