无法找到传递给 EmailAuthProvider 的密码参数

Unable to find the password parameter that is passed to EmailAuthProvider

我目前正在尝试使用 Android Firebase 将匿名帐户转换为永久帐户。我正在使用电子邮件密码提供商作为创建帐户的方法。文档声明您必须将密码参数传递给以下代码:

val credential = EmailAuthProvider.getCredential(email, password)

我的代码如下,我使用 FirebaseAuth 实例访问当前用户,然后允许我访问他们的电子邮件,但是我找不到访问密码的方法:

val credential = EmailAuthProvider.getCredential(mAuth.currentUser.email, password)

我看过的其他 links 没有提高清晰度并导致进一步混淆。

此外,最后一个 link 声明出于安全原因我们无法获取密码。

I am currently trying to convert an anonymous account into a permanent one using Android Firebase. I am using the email-password provider as a method to create an account.

从这句话,我了解到您的项目中已有匿名帐户,您尝试使用用户名和密码将其转换为永久用户。

The docs state that you must pass a password parameter into the following code:

val credential = EmailAuthProvider.getCredential(email, password)

这是正常要求。由于您的匿名用户可以在没有任何凭据的情况下加入您的应用程序,因此为了能够转换它们,您需要向每个用户询问电子邮件和密码。这可以在 Android 中使用两个 EditText 对象简单地完成。

获得用户输入后,您可以调用 getCredential() 并将这些值作为参数传递。完成后,您可以致电:

auth.currentUser!!.linkWithCredential(credential)
                            .addOnCompleteListener(this) { /* ... */ }

请注意auth.currentUser代表匿名用户。当您调用 linkWithCredential() 并将 credential 对象作为参数传递时,实际上是将匿名用户转换为永久用户。

由于当前帐户是匿名的,因此还没有电子邮件和密码。

通常的流程是您首先匿名登录用户,而不询问他们任何信息。然后稍后(当用户准备好明确登录时)您要求他们提供他们的电子邮件和密码,使用它们来创建电子邮件凭据,然后 link 他们到匿名帐户。