不推荐使用fetchProvidersForEmail方法。 但在firebase网站上,我没有找到替代方案,所以我不得不问你。希望你能帮忙。
我想检查数据库中是否已有电子邮件,这是旧代码。
Auth.fetchProvidersForEmail(Email.getText().toString()).addOnCompleteListener(new OnCompleteListener<ProviderQueryResult>() {
@Override
public void onComplete(@NonNull Task<ProviderQueryResult> task) {
答案 0 :(得分:4)
正如fetchProvidersForEmail
的文档所说:
fetchProvidersForEmail(String email)
此方法已弃用。此方法正在重命名以确保功能清晰 - 请改为使用
fetchSignInMethodsForEmail(String)
方法。
如果电子邮件没有帐户,SignInMethodQueryResult. getSignInMethods()
将返回一个空列表。
答案 1 :(得分:0)
如果要检查是否存在电子邮件,如果您检查用户是否第一次登录,则会发生相同的情况。为实现此目的,您只需在isNewUser()
回调中调用OnCompleteListener.onComplete
方法,就像这样:
OnCompleteListener<AuthResult> completeListener = new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
boolean isNewUser = task.getResult().getAdditionalUserInfo().isNewUser();
if (isNewUser) {
Log.d("TAG", "Is New User!");
} else {
Log.d("TAG", "Is Old User!");
}
}
}
};
有关更多信息,请参阅official doc。