我正在为我拥有的使用 Firebase 的 Web 应用程序构建仪表板,我正在尝试更新使用 Facebook 登录创建的用户,以便能够使用 Firebase Admin SDK 使用电子邮件和密码登录。我正在尝试这个:
override fun changeIdentityProviderToEmailAndPassword(uid: String, email: String): Completable {
return Single.fromCallable { auth.getUser(uid) }
.flatMapCompletable {
val currentProvider = it.providerData.first()
val emailProvider = UserProvider.builder()
.setProviderId("password")
.setUid(email)
.setEmail(email)
.build()
val request: UserRecord.UpdateRequest = UserRecord.UpdateRequest(uid)
.setProvidersToUnlink(listOf(currentProvider.providerId))
.setProviderToLink(emailProvider)
Completable.fromFuture(auth.updateUserAsync(request))
}
}
但它不工作,我总是得到这个错误:
Caused by: com.google.firebase.auth.FirebaseAuthException: Unexpected HTTP response with status: 400
{
"error": {
"code": 400,
"message": "INVALID_PROVIDER_ID",
"errors": [
{
"message": "INVALID_PROVIDER_ID",
"domain": "global",
"reason": "invalid"
}
]
}
}
但是文档说“密码”是使用电子邮件和密码登录的正确提供者 ID。有没有办法使用 Firebase Admin SDK 来做到这一点?