簡體   English   中英

Firebase 關於電話認證的認證問題

[英]Firebase Auth problem regarding phone authentication

我對 Firebase 身份驗證有疑問。

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

當有人使用我的應用程序中提供的谷歌登錄方法時,會創建一個新帳戶,然后當有人使用 email 登錄方法時,使用與谷歌帳戶相同的 email 地址登錄方法,不會創建新帳戶,而是將相同的帳戶添加到以前的帳戶中用戶身份。

我已將 firestore 添加到我保存用戶數據的項目中。

最近我添加了電話身份驗證,當用戶登錄時,如果 Firestore 數據庫中不存在電話,我不希望創建具有新 UID 的新帳戶。 相反,我希望該帳戶與 email 帳戶合並。

請幫助我實現這一目標。

定義那個

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

                                }
                            }
                        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM