【发布时间】:2020-05-11 23:23:55
【问题描述】:
我正在创建应用程序,用户必须验证他的电话号码,并且必须使用他的电子邮件和密码以及其他文件(如 dob 等)进行注册。第一个用户将验证电话号码,所以我使用了电话号码无身份验证,一旦完成,用户将导航到电子邮件和密码注册。所以这里用户将使用电子邮件身份验证进行注册。它创建了两个用户标识。所以我想在一个用户ID下进行两种身份验证。
PhoneAuthentication.java
private void signInWithCredential(PhoneAuthCredential credential) {
mAuth.signInWithCredential(credential)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Toast.makeText(GetOTPActivity.this, "Mobile no authentication is successfully !!!", Toast.LENGTH_SHORT).show();
Intent intent;
intent = new Intent(GetOTPActivity.this, Register.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
} else {
Toast.makeText(GetOTPActivity.this, task.getException().getMessage(),
Toast.LENGTH_LONG).show();
}
}
});
}
电子邮件身份验证.java
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(Register.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Toast.makeText(Register.this, "Signup Successfully", Toast.LENGTH_SHORT).show();
if (!task.isSuccessful()) {
spotsDialog.dismiss();
Toast.makeText(Register.this, "Signup failed." + task.getException(),
Toast.LENGTH_SHORT).show();
} else {
spotsDialog.dismiss();
userID = mAuth.getCurrentUser().getUid();
User user = new User(edtName.getText().toString(), edtPhone.getText().toString(),
edtEmail.getText().toString(), edtPassword.getText().toString(), edtConfirmPassword.getText().toString(), false);
user_tbl.child(userID).setValue(user);
startActivity(new Intent(Register.this, Login.class));
}
}
});
}
});
【问题讨论】:
-
本文档清楚地解释了如何实现这一目标。 firebase.google.com/docs/auth/android/account-linking
标签: android firebase firebase-authentication