Тот факт, что вы не записываете email
и name
в своей базе данных, не является проблемой, поскольку при попытке аутентификации анонимного пользователя объект FirebaseUser
не содержит значений дляэти свойства.Так вот почему эти свойства пусты в вашей базе данных.Если вы хотите, чтобы они были заполнены, вам следует связать анонимную учетную запись с реальной учетной записью, как объяснено здесь .
Причина, по которой вы не добавили пользователя в консоль Firebase, заключается в том, что вы нене передаете addOnCompleteListener методу метода действие и объект OnCompleteListener
, который вы только передаете this
, что неверно.Чтобы решить эту проблему, используйте следующий код:
firebaseAuth!!.signInAnonymously()
.addOnCompleteListener(this, OnCompleteListener<AuthResult> { task ->
if (task.isSuccessful) {
// Sign in success, update UI with the signed-in user's information
Log.d(TAG, "signInAnonymously:success")
Toast.makeText(this, "Authentication succeeded.",
Toast.LENGTH_SHORT).show()
/* Assign 'user' */
user = firebaseAuth!!.currentUser
// Write a message to the database
val database = FirebaseDatabase.getInstance()
val uidPath: String? = user?.uid
val uidRef = database.getReference("users")
val nameRef = database.getReference("users/$uidPath/name")
val emailRef = database.getReference("users/$uidPath/email")
val authProviderRef = database.getReference("users/$uidPath/authProvider")
uidRef.setValue("${user?.uid}")
nameRef.setValue("${user?.displayName}")
emailRef.setValue("${user?.email}")
user?.providerData?.forEach {
authProviderRef.setValue(it.providerId)
}
} else {
// If sign in fails, display a message to the user.
Log.w(TAG, "signInAnonymously:failure", task.exception)
Toast.makeText(this, "Authentication failed.",
Toast.LENGTH_SHORT).show()
}
})