Выйти из Firebase в Android Studio: getProviderData () возвращает ноль - PullRequest
0 голосов
/ 17 декабря 2018

Я новичок в Android, я создал простой метод входа с помощью Firebase, где я включил вход с помощью электронной почты, Facebook и Google. Я создал функцию выхода из системы.Но когда я нажимаю на метод выхода, второй раз он не запрашивает аутентификацию для Facebook и Google.Кто-нибудь может мне помочь!пожалуйста, не волнуйтесь, если что-то не так, я очень новичок в этом.

private void OnClickSignOut(){
    sign_out_btn =(Button)findViewById(R.id.logout_btn);
    finish();
    //startActivity(new Intent(ProfileActivity.this,MainActivity.class));
    sign_out_btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            FirebaseAuth.getInstance().signOut();

            for (UserInfo user: FirebaseAuth.getInstance().getCurrentUser().getProviderData()) {
                if (user.getProviderId().equals("facebook.com")) {
                    System.out.println("User is signed in with Facebook");
                    LoginManager.getInstance().logOut();
                    startActivity(new Intent(ProfileActivity.this,MainActivity.class));
                }
                else if(user.getProviderId().equals("google.com")){
                    mGoogleSignInClient.signOut().addOnCompleteListener(ProfileActivity.this,
                            new OnCompleteListener<Void>() {
                                @Override
                                public void onComplete(@NonNull Task<Void> task) {
                                    startActivity(new Intent(ProfileActivity.this,MainActivity.class));
                                }
                            });
                }
                else{
                    startActivity(new Intent(ProfileActivity.this,MainActivity.class));
                }
            }
        }
    });
}

1 Ответ

0 голосов
/ 19 декабря 2018

Пока начальная проблема решается путем изменения положения оператора финиша.Но после изменения кода я столкнулся с другими проблемами.Идентификатор возвращает google.com, но не входит в цикл.при повторном нажатии кнопки выхода из системы происходит сбой приложения.Ниже приведен код и Logcat Logcat

                for (UserInfo user: FirebaseAuth.getInstance().getCurrentUser().getProviderData()) {
                   Log.d("***************1.Check provider "+user.getProviderId(),"check");
                    if (user.getProviderId().equals("facebook.com")) {
                        FirebaseAuth.getInstance().signOut();
                        System.out.println("User is signed in with Facebook");
                        LoginManager.getInstance().logOut();
                        startActivity(new Intent(ProfileActivity.this,MainActivity.class));
                        Log.d("Signout","Facebook Clicked");
                        finish();
                    }
                    Log.d("***************2.Check provider "+user.getProviderId(),"check");
                    if(user.getProviderId().equals("google.com")){
                        FirebaseAuth.getInstance().signOut();
                        mGoogleSignInClient.signOut().addOnCompleteListener(ProfileActivity.this,
                                new OnCompleteListener<Void>() {
                                    @Override
                                    public void onComplete(@NonNull Task<Void> task) {
                                        System.out.println("User is signed in with Google");
                                        startActivity(new Intent(ProfileActivity.this,MainActivity.class));
                                        Log.d("****Signout","Google Clicked");
                                        finish();
                                    }
                                });
                    }
                    else{
                        FirebaseAuth.getInstance().signOut();
                        startActivity(new Intent(ProfileActivity.this,MainActivity.class));
                        System.out.println("User is signed in with email");
                        Log.d("****Signout","email signedout");
                        finish();
                    }
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...