如何从android中的应用中注销用户

问题描述 投票:0回答:1

[我是android新手,现在我正在努力使用户使用他们的facebook和gmail登录,一切顺利,但是我需要知道如何使用户从应用程序注销并使用新帐户登录用户。我尝试了很多教程,但没有一个不是我所想和期望的。用户单击其他活动中的注销按钮,然后返回到登录活动。

示例:当用户从UserAction.class登录时,注销按钮位于ProfileFragment.class

我尝试了很多,但没有找到任何解决方案有任何帮助。

我尝试过的代码

public class  UserAction extends AppCompatActivity {

private CallbackManager callbackManager;
public LoginButton loginButton;
private static final String EMAIL = "email";

private SignInButton signInButton;
GoogleSignInClient mGoogleSignInClient;
private FirebaseAuth mAuth;
private int RC_SIGN_IN = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_user_action);
    this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    signInButton = findViewById(R.id.gmail_login_button);
    mAuth = FirebaseAuth.getInstance();

    GoogleSignInOptions gsp = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(getString(R.string.default_web_client_id))
            .requestEmail()
            .build();
    mGoogleSignInClient = GoogleSignIn.getClient(this, gsp);

    signInButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            GmailLogin();
        }

        private void GmailLogin() {

            Intent mailSignIn = mGoogleSignInClient.getSignInIntent();
            startActivityForResult(mailSignIn,RC_SIGN_IN);
        }
    });


    AccessToken accessToken = AccessToken.getCurrentAccessToken();
    boolean isLoggedIn = accessToken != null && !accessToken.isExpired();


    AppEventsLogger.activateApp(getApplication());
    callbackManager = CallbackManager.Factory.create();

    loginButton = (LoginButton) findViewById(R.id.fb_login_button);
    loginButton.setReadPermissions(Arrays.asList(EMAIL));

    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {

            Intent intent = new Intent(UserAction.this, AppMain.class);
            startActivity(intent);
        }

        @Override
        public void onCancel() {
            // App code
        }

        @Override
        public void onError(FacebookException exception) {
            // App code
        }
    });

}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    callbackManager.onActivityResult(requestCode, resultCode, data);

    if (requestCode == RC_SIGN_IN){

        Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
        handleSignInResult(task);
    }
    super.onActivityResult(requestCode, resultCode, data);

}

private void handleSignInResult(Task<GoogleSignInAccount> CompletedTask) {

    try {

        GoogleSignInAccount account = CompletedTask.getResult(ApiException.class);
        Toast.makeText(this, "Signed in Successfully", Toast.LENGTH_SHORT).show();
        FirebaseGoogleAuth(Objects.requireNonNull(account));

    } catch (ApiException e) {

        ConstraintLayout UserAction = findViewById(R.id.userAction);
        Snackbar snackbar = Snackbar.make(UserAction,"Login Failed Please try Again.", Snackbar.LENGTH_SHORT);
        snackbar.show();
        FirebaseGoogleAuth(null);
    }
}

private void FirebaseGoogleAuth(final GoogleSignInAccount account) {

    AuthCredential authCredential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
    mAuth.signInWithCredential(authCredential).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            if (task.isSuccessful()){

                FirebaseUser user = mAuth.getCurrentUser();
                GoogleSignInAccount googleSignInAccount = GoogleSignIn.getLastSignedInAccount(getApplicationContext());

                String personName = Objects.requireNonNull(googleSignInAccount).getDisplayName();
                String personEmail = googleSignInAccount.getEmail();
                String personId = googleSignInAccount.getId();

                Toast.makeText(UserAction.this, personName+ "\n" +personEmail + "\n" + personId , Toast.LENGTH_SHORT).show();

            }
        }
    });
}

}

java android google-signin facebook-sdk-4.0
1个回答
0
投票

要退出Firebase身份验证,请使用

mAuth.signOut();

并且要使用GoogleSignInClient从Google注销,请使用

mGoogleSignInClient.signOut()
© www.soinside.com 2019 - 2024. All rights reserved.