我有一个有关Firebase身份验证的查询。
我在Android Studio项目中使用了Firebase Auth。
当某人使用我的应用程序中提供的google登录方法创建了一个新帐户,然后当某人使用与Google帐户相同的电子邮件地址使用电子邮件登录方法登录时,没有创建新帐户,而是添加了同一帐户到以前的用户ID。
我已将firestore添加到项目中,以保存有关用户的数据。
最近我添加了电话身份验证,并且当用户登录时,如果电话没有存在于Firestore数据库中,则我不希望创建具有新UID的新帐户。相反,我希望该帐户与电子邮件帐户合并。
请帮助我实现这一目标。
答案 0 :(得分:0)
定义
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();
}
}
});