所以我目前正在開展一個專案,我已經使用 Firebase 和 Google 作為唯一的登錄/注冊提供商實施了身份驗證。身份驗證程序作業正常,但是我想向經過身份驗證的用戶添加更多和高度特定的屬性并能夠操作這些屬性。為此,我打算使用 Google Firestore。
現在的問題是,如何將創建的用戶帳戶從 firebase auth 鏡像到 firestore。每當呼叫 signIn 函式時,我就考慮將其寫入基于 UID 的 firestore,但是問題是我認為同一個用戶會有多個條目。
我在一些博客上閱讀過,使用云功能可以實作預期的結果,但是我正在尋找可以在我的下一個專案中實施的解決方案,即使我以后可能會切換到云功能。
你知道我怎樣才能達到預期的結果嗎?感謝您的幫助,非常感謝!
uj5u.com熱心網友回復:
您在答案中描述的方法(即“將創建的用戶帳戶從 Firebase 身份驗證鏡像到 Firestore”)確實是一種標準方法。
您提到以下風險:
我認為同一用戶將有多個條目
如果問題是“如何處理不同用戶具有相同用戶的 Doc ID 的風險”,如果您使用uidAuthentication 服務生成的 userID ( ) 作為 doc ID,則可以確定它是唯一的。
如果問題是“如何為一個用戶創建多個包含不同資訊的用戶檔案”,您可以很好地使用不同的集合,并再次使用uid身份驗證服務生成的 userID () 作為檔案 ID(每個檔案都在不同的集合)。
您基本上有兩個選項來創建 Firestore 用戶的檔案:
通過云函式:在這種情況下,您將在用戶創建時觸發云函式并使用用戶的 uid 來創建 Firestore 檔案。
exports.createUserDoc = functions.auth.user().onCreate((user) => {
const userId = user.uid;
return admin.firestore().collection('users').doc(userId).set( {...} );
});
從前端:您需要設定一個安全規則,僅當檔案 ID 等于他的 userId 時,才允許用戶創建自己的 Firestore 用戶檔案。這是一個例子:
service cloud.firestore {
match /databases/{database}/documents {
// Make sure the uid of the requesting user matches the ID of the user
// document. The wildcard expression {userId} makes the userId variable
// available in rules.
match /users/{userId} {
allow create: if request.auth != null && request.auth.uid == userId;
}
}
}
uj5u.com熱心網友回復:
沒有必要,因為兩個服務都假定相同的用戶身份 = UID。
Cloud Functions 提供Firebase 身份驗證觸發器,它提供event.uid.
根據事件和 UID,您可以使用 Firebase/Firestore 管理員添加或洗掉節點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/484119.html
上一篇:Firebase離線存盤資料
