【问题标题】:Firebase auth and sign outFirebase 身份验证并退出
【发布时间】:2018-01-08 09:52:03
【问题描述】:

我的应用同时使用电子邮件和 Google 身份验证。如果用户注销并尝试登录,则会出现问题。应用程序关闭,再次单击时,用户登录后打开。如果我从登录屏幕按下后退按钮并退出应用程序,再次启动时会按预期工作。 这是我用于退出的代码:

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();

    if (id == R.id.getOut) {
        mFirebaseAuth.getInstance().signOut();
        DetachReadListener();
        finishAffinity();
        return true;
    }

    return super.onOptionsItemSelected(item);
}


protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == RC_SING_IN) {
        if (resultCode==RESULT_CANCELED) {
            finishAffinity();
        }
    }

}

Android Monitor 没有显示任何错误,所以我对此一无所知。请帮我解决这个错误。

谢谢!

我的登录密码:

 public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {

            FirebaseUser user = mFirebaseAuth.getCurrentUser();

            if (user!=null) {

                 uid = user.getUid();

                if (user.getPhotoUrl()!=null) {
                    avatarurl = user.getPhotoUrl().toString();
                    RoundedBitmapDrawable drawable = RoundedBitmapDrawableFactory.create(getApplicationContext().getResources(),getImageBitmap(avatarurl));
                    drawable.setCircular(true);
                    imgavatar.setImageDrawable(drawable);
                 //   imgavatar.setImageBitmap(getImageBitmap(avatarurl));
                } else
                    imgavatar.setImageResource(R.drawable.ic_account_black_48dp);

                mUsername = user.getDisplayName();
                username.setText(mUsername);
                AttachReadListener();
                DatabaseReference usruid = usersref.child(uid).child("flag");

                usruid.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {

                        while (!dataSnapshot.exists()) {
                            pb.setContentView(R.layout.activity_progress_bar);
                            pb.requestWindowFeature(Window.FEATURE_NO_TITLE);
                            pb.show();
                        }
                        val = dataSnapshot.getValue(String.class);
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });

            } else {
                startActivityForResult(
                        AuthUI.getInstance()
                        .createSignInIntentBuilder()
                                .setIsSmartLockEnabled(false)
                                .setTheme(R.style.LoginTheme)
                                .setLogo(R.drawable.firstlogo)
                        .setAvailableProviders(Arrays.asList(new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build(),new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build()))
                        .build(), RC_SING_IN

                );

            }
        }
    };

【问题讨论】:

  • 请给出更详细的代码
  • 你在finishAffiinity 和DetaisReadListener 方法中做了什么?此外,请发布您的登录代码。
  • 您好,谢谢!我通过添加登录代码编辑了我的帖子。

标签: android firebase firebase-authentication


【解决方案1】:

正如您所说,您同时使用电子邮件和谷歌登录。因此,如果用户使用电子邮件方法登录,则使用FirebaseAuth.getInstance().signOut()。
如果用户使用 google 登录,则从 Google Sign-In 和 Firebase 中注销用户,例如:

 googleSignInClient.signOut().addOnCompleteListener(this,
            new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    // firebase sign out
                    FirebaseAuth.getInstance().signOut();                        

                    Intent intent = new Intent(SignOutActivity.this, MainActivity.class);
                    startActivity(intent);
                    finish();

                }
            });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2020-12-25
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多