[英]How to create Firebase Authentication custom token without service account json in nodejs?
我想在不使用服務帳戶 json 的情況下創建自定義令牌。 嘗試了以下配置項: https<\/a> :\/\/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<\/a>
並使用以下代碼生成令牌
admin.auth().createCustomToken(uid)
.then(function(customToken) {
// Send token back to client
})
.catch(function(error) {
console.log('Error creating custom token:', error);
});
簡短回答:您不能,sdk 密鑰是對您的應用進行身份驗證和授權以授予權限的唯一方法。
長(沒那么長)答案:使用一個雲函數,如果它在你的項目中,它會為你初始化它,所以你不必使用密鑰來實例化sdk
如果您的代碼未在 GCP 的托管運行時中運行,則您必須提供服務帳號 JSON 文件或至少提供serviceAccountId
應用選項。
admin.initializeApp({
serviceAccountId: 'my-client-id@my-project-id.iam.gserviceaccount.com',
});
您應該首先通過將您的服務帳戶密鑰(從 Firebase 下載)傳遞給憑據來初始化 admin。 在調用 admin.auth() 之前使用此代碼。
var serviceAccount = require('./ServiceAccountKey.json')
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
在最新的firebase-admin
版本中,簡單地提供serviceAccountId
是行不通的。 您還需要指定projectId
:
admin.initializeApp({
projectId: process.env.PROJECT_ID,
serviceAccountId: process.env.SERVICE_ACCOUNT_ID,
})
如果不這樣做,您將收到以下錯誤:
errorInfo: {
code: 'app/invalid-credential',
message: 'Failed to determine project ID: Error while making request: getaddrinfo ENOTFOUND metadata.google.internal. Error code: ENOTFOUND'
},
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.