我正在嘗試使用 firebase auth 來驗證令牌。
在此方法的參考資料中,寫道:
回報:
承諾
如果 ID 令牌有效,則通過令牌的解碼宣告履行承諾;否則,一個被拒絕的承諾。
在 MDN 中關于 Promises 的內容是這樣寫的:
如果 Promise 被拒絕,則 await 運算式會拋出被拒絕的值。
因此,我如何知道我得到的價值是來自被拒絕還是被履行的承諾?
我的代碼:
try {
const decoded = await adminAuth.verifyIdToken(idToken);
const uid = decoded.uid;
/*...*/
return next();
} catch (err) {
return res.status(500).json({ err });
}
我知道可能為被拒絕的承諾解碼的值不會有 uid 欄位,因此會引發錯誤,但我怎么能確定呢?
uj5u.com熱心網友回復:
Firebase Admin Auth SDK 可能會引發多個錯誤,例如令牌被撤銷或無效。您可以在檔案中找到列出所有錯誤代碼。您應該將確切的錯誤回傳給您的客戶,以防它包含任何敏感資訊。相反,您可以在某處記錄錯誤并將一般錯誤回傳給客戶端,如下所示:
try {
const decoded = await adminAuth.verifyIdToken(idToken);
const uid = decoded.uid;
/*...*/
return next();
} catch (err) {
// Log the error e.g to Cloud logging
if (error.code === "auth/id-token-expired") {
return res.status(401).json({ err: "Unauthorized" });
}
return res.status(500).json({ err: "Internal server error" });
}
uj5u.com熱心網友回復:
如果它拋出,那么 try 將失敗并且值將被傳遞給 catch。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/505861.html
標籤:Google Cloud Collective javascript 火力基地 异步等待
上一篇:Flutter:需要加載值然后對Futurebuilder進行firebase查詢導致RangeError(索引)
下一篇:離子電容器:錯誤:未在網路上實作
