有关电话身份验证的Firebase Auth问题



我有一个关于Firebase身份验证的查询。

我在我的Android Studio项目中使用了Firebase Auth。

当某人使用我的应用程序中提供的谷歌登录方法时,会创建一个新帐户,然后当某人使用与谷歌帐户相同的电子邮件地址使用电子邮件登录方法登录时,不会创建新帐户,而是将相同的帐户添加到以前的用户ID中。

我在项目中添加了firestore,保存用户的数据。

最近我添加了手机身份验证,当用户登录时,如果手机在firestore数据库中不存在,我不希望创建一个具有新UID的新帐户。相反,我希望该帐户与电子邮件帐户合并。

请帮我实现这一点。

定义

private  FirebaseFirestoreSettings settings ;

在注册的按钮中

settings = new FirebaseFirestoreSettings.Builder().setTimestampsInSnapshotsEnabled(true)
.build();
firebaseFirestore.setFirestoreSettings(settings);
firebaseFirestore.collection("USERS")
.add(userData)

这里是一个例子

firebaseAuth.createUserWithEmailAndPassword(email.getText().toString() , password.getText().toString())
.addOnCompleteListener(new OnCompleteListener<AuthResult>()
{
@Override
public void onComplete(@NonNull Task<AuthResult> task)
{
if(task.isSuccessful())
{
Log.i(TAG , "checkEmailAndPassword : firebaseAuth.createUserWithEmailAndPassword  IS SUCCESSFUL");
Map<String , Object> userData = new HashMap<>();
userData.put("fullname" , fullName.getText().toString());
String userid = firebaseAuth.getCurrentUser().getUid();
Log.i(TAG , "HashMap Created successfully " + fullName.getText().toString());
settings = new FirebaseFirestoreSettings.Builder().setTimestampsInSnapshotsEnabled(true)
.build();
firebaseFirestore.setFirestoreSettings(settings);

firebaseFirestore.collection("USERS")
.add(userData)
.addOnSuccessListener(new OnSuccessListener<DocumentReference>()
{
@Override
public void onSuccess(DocumentReference documentReference)
{

Log.i(TAG , "checkEmailAndPassword : firebaseFirestore.collection add(userData) IS SUCCESSFUL");
Log.i(TAG , "Account Created" + email.getText().toString());
mainIntent();

}
}).addOnFailureListener(new OnFailureListener()
{
@Override
public void onFailure(@NonNull Exception e)
{



Log.i(TAG , "checkEmailAndPassword : firebaseAuth.create User With Email And Password ERROR");
String error = e.getMessage();
Log.e(TAG , "ERROR " + error);

Toast.makeText(getActivity(), error, Toast.LENGTH_SHORT).show();

}
});




}
else
{

Log.i(TAG , "checkEmailAndPassword : firebaseAuth.create User With Email And Password ERROR");
String error = task.getException().getMessage();
Toast.makeText(getActivity(), error, Toast.LENGTH_SHORT).show();
}
}
});

最新更新