Firebase将/链接密码添加到现有联合提供商中



我允许用户与Google,Facebook或电子邮件注册。请按照此链接知道如何将多个Auth提供商链接到同一帐户,但这是我的方案

假设用户使用Google或Facebook创建帐户,但以后(在其创建帐户之后)他想设置密码,以便他也可以使用电子邮件和密码登录。我知道如何将电子邮件/密码帐户与其他联合提供商(Google,Facebook)链接,但不是相反。我唯一的是创建一个新的帐户,并与他们在早期阶段选择的方法相关联的新密码和电子邮件,但由于已经存在电子邮件,它将无法使用。我什至在控制台上启用allow multiple account with same address,但它返回ERROR_EMAIL_ALREADY_IN_USE,所以我认为它不适用于电子邮件/密码。

与Facebook或Google注册后,如何将密码添加到该帐户中?感谢任何advace。

从链接帐户提供商的文档中:

电子邮件 - password登录

AuthCredential credential = EmailAuthProvider.getCredential(email, password);

然后,您将凭据与现有的Google/Facebook Accont链接到:

AuthCredential对象传递到签名的用户的linkWithCredential方法:

mAuth.getCurrentUser().linkWithCredential(credential)
    .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            if (task.isSuccessful()) {
                Log.d(TAG, "linkWithCredential:success");
                FirebaseUser user = task.getResult().getUser();
                updateUI(user);
            } else {
                Log.w(TAG, "linkWithCredential:failure", task.getException());
                Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",
                        Toast.LENGTH_SHORT).show();
                updateUI(null);
            }
            // ...
        }
    });

update

使用signInAndRetrieveDataWithCredential代替linkWithCredential,因为linkWithCredential已弃用。

最新更新