我允许用户与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
已弃用。