Firebase Admin:将提供商从 facebook 更改为电子邮件/密码

问题描述 投票:0回答:0

我正在为我拥有的使用 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 来做到这一点?

firebase firebase-admin
© www.soinside.com 2019 - 2024. All rights reserved.