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

时间:2020-04-30 08:33:14

标签: java android firebase android-studio firebase-authentication

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

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

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

我已将firestore添加到项目中,以保存有关用户的数据。

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

请帮助我实现这一目标。

1 个答案:

答案 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();

                                }
                            }
                        });