微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Firebase 身份验证从 Google 帐户注销

如何解决使用 Firebase 身份验证从 Google 帐户注销

我有一个应用,我在其中使用 Google 帐户使用 Firebase 身份验证登录。 这是登录代码

 List<AuthUI.IdpConfig> providers;
 providers= Arrays.asList(
                new AuthUI.IdpConfig.EmailBuilder().build(),new AuthUI.IdpConfig.GoogleBuilder().build()

        );
 private void showSignInoptions() {
        startActivityForResult(
                AuthUI.getInstance()
                        .createSignInIntentBuilder()
                        .setAvailableProviders(providers)
                        .build(),MY_REQUEST_CODE);
    }

    @Override
    protected void onActivityResult(int requestCode,int resultCode,@Nullable Intent data) {
        super.onActivityResult(requestCode,resultCode,data);
        if(requestCode==MY_REQUEST_CODE)
        {
            IdpResponse response=IdpResponse.fromresultIntent(data);
            if(resultCode==RESULT_OK)
            {

                final FirebaseUser firebaseUser= FirebaseAuth.getInstance().getCurrentUser();
                assert firebaseUser != null;
                user_information.orderByKey()
                        .equalTo(firebaseUser.getUid())
                        .addListenerForSingleValueEvent(new ValueEventListener() {
                            @Override
                            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                                if(dataSnapshot.getValue()==null)
                                {
                                    if(!dataSnapshot.child(firebaseUser.getUid()).exists()){
                                        Common.loggedUser=new User(firebaseUser.getUid(),firebaseUser.getEmail());
                                        user_information.child(Common.loggedUser.getUid())
                                                .setValue(Common.loggedUser);
                                    }
                                }
                                else {
                                    Common.loggedUser=dataSnapshot.child(firebaseUser.getUid()).getValue(User.class);
                                }
                                Paper.book().write(Common.USER_UID_SAVE_KEY,Common.loggedUser.getUid());

                                updatetoken(firebaseUser);
                                setUpUI();


                            }

                            @Override
                            public void onCancelled(@NonNull DatabaseError error) {

                            }
                        });

            }
        }
    }

代码运行良好,登录后将我发送到 NavigationDrawerActivity。 在导航中,我有一个选项注销。 现在我想要做的是,当我点击退出时,它应该让我退出我的谷歌帐户,下次当我登录活动时,它应该再次向我显示使用谷歌登录的选项,当我点击时,它应该像首次安装应用时一样要求选择 Google 帐户。

我尝试了从 stackoverflow 的答案中获得的以下代码,但它不起作用。 它将我重定向登录活动,但不显示任何选项,我直接登录

这是代码,我试过了。

 GoogleSignInClient googleSignInClient;
                  GoogleSignInoptions gso=new GoogleSignInoptions.Builder(GoogleSignInoptions.DEFAULT_SIGN_IN)
                          .requestIdToken(getString(R.string.default_web_client_id))
                          .requestemail()
                          .build();
                  googleSignInClient=GoogleSignIn.getClient(getBaseContext(),gso);
                  googleSignInClient.signOut().addOnCompleteListener(NavigateActivity.this,new OnCompleteListener<Void>() {
                              @Override
                              public void onComplete(@NonNull Task<Void> task) {
                                  FirebaseAuth.getInstance().signOut();
                                  Intent setupintent=new Intent(getBaseContext(),login.class);
                                  setupintent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                  startActivity(setupintent);
                                  finish();
                              }
                          });

请指导我在退出谷歌账户时如何再次显示谷歌构建器。

解决方法

当您使用 AuthUI 时,您无需使用 GoogleSignInClient 注销。您可以直接从 AuthUI 执行此操作,例如:

AuthUI.getInstance()
      .signOut(context)
      .addOnSuccessListener {  // start login activity }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?