如何檢索當前登錄用戶的所有欄位?

我看過很多教程和問題,其中一些討論了整個集合,另一些討論了類似的主題,但沒有找到有關這方面的資訊。
謝謝
更新
當前代碼:
fun getUserName_FireBase(){
if(userID==null){
println("The userID is null")
userID= getUserID()
println("The userId has been assigned and now is: " userID.toString())
}
println("1")
val db = FirebaseFirestore.getInstance()
println("1a")
val usersRef = db.collection("users")
println("1b")
usersRef.document(userID.toString()).get().addOnCompleteListener { task ->
println("2")
if (task.isSuccessful) {
println("3")
val document = task.result
if(document!!.exists()){
println("4")
userName = document!!.getString("user").toString()
println("user is " userName.toString())
}else {
println("5")
Log.d("Error", "This document does not exist")
}
}else {
println("6")
task.exception?.message?.let {
Log.d(TAG, it)
}
}
println("7")
}
println("8")
}
控制臺錯誤
給出錯誤是因為稍后我需要訪問應該在該函式中填充的 userName var

uj5u.com熱心網友回復:
為了能夠獲取用戶資料,您必須創建一個指向該檔案的參考,執行 get() 呼叫并附加一個偵聽器,如以下代碼行所示:
val db = FirebaseFirestore.getInstance()
val usersRef = db.collection("users")
usersRef.document("gA4z1AhkQpQ6J47sIMmCGIZRKDK2").get().addOnCompleteListener { task ->
if (task.isSuccessful) {
val document = task.result
if (document.exists()) {
val email = document.getString("email")
val pass = document.getString("pass")
val user = document.getString("user")
Log.d(TAG,"$email/$pass/$user")
} else {
Log.d(TAG, "The document doesn't exist.")
}
} else {
task.exception?.message?.let {
Log.d(TAG, it)
}
}
}
logcat 中的結果將是:
barrooroor@gmail.com/paport/do3fe4232ef2
如果“gA4z1AhkQpQ6J47sIMmCGIZRKDK2”是來自身份驗證程序的用戶ID,那么您可以簡單地使用而不是硬編碼的ID:
val auth = FirebaseAuth.getInstance()
val uid = auth.currentUser?.uid
usersRef.document(uid).get().addOnCompleteListener {/* ... /*}
// ??
除此之外,更重要的是,永遠不要將敏感資料以純文本形式存盤為密碼。惡意用戶可能會利用這一點。始終為此使用Firebase 身份驗證并使用Firestore 安全規則保護資料庫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/361492.html
標籤:安卓 火力基地 科特林 谷歌云平台 谷歌云firestore
