Lamps :
I am a beginner programmer and I have a problem. How do I do google logout functions in the Activity Menu? I sit on this problem for a long time and somehow I can't deal with it. The Activity menu is used to show user information..
MainActivity
public class MainActivity extends AppCompatActivity {
SignInButton signInButton;
public GoogleSignInClient mGoogleSignInClient;
private final static int RC_SIGN_IN = 123;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAuth = FirebaseAuth.getInstance();
signInButton=(SignInButton)findViewById(R.id.sign_in_button);
createRequest();
signInButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
signIn();
}
});
}
@Override
protected void onStart() {
super.onStart();
FirebaseUser user = mAuth.getCurrentUser();
if(user!=null){
Intent intent = new Intent(getApplicationContext(),MenuActivity.class);
startActivity(intent);
}
}
private void createRequest() {
// Configure Google Sign In
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();
// Build a GoogleSignInClient with the options specified by gso.
mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
}
private void signIn() {
Intent signInIntent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, RC_SIGN_IN);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
if (requestCode == RC_SIGN_IN) {
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
try {
// Google Sign In was successful, authenticate with Firebase
GoogleSignInAccount account = task.getResult(ApiException.class);
firebaseAuthWithGoogle(account);
} catch (ApiException e) {
// Google Sign In failed, update UI appropriately
// ...
Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
}
private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
FirebaseUser user = mAuth.getCurrentUser();
Intent intent = new Intent(getApplicationContext(),MenuActivity.class);
startActivity(intent);
} else {
Toast.makeText(MainActivity.this, "Sorry auth failed.", Toast.LENGTH_SHORT).show();
}
// ...
}
});
}
}
Menu Activity
logoutBtn is the button that after clicking will be used to log out the user from Google and chew him to MainActivity so that he can choose there again which account he wants to log into my application
Button logoutBtn;
TextView userName;
ImageView profileImage;
ImageButton play_button, multi_button, statistic_button, option_button;
FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
logoutBtn = (Button) findViewById(R.id.logoutBtn);
userName = (TextView) findViewById(R.id.name);
profileImage = (ImageView) findViewById(R.id.profileImage);
GoogleSignInAccount signInAccount = GoogleSignIn.getLastSignedInAccount(this);
if(signInAccount != null) {
userName.setText(signInAccount.getDisplayName());
//mail.setText(signInAccount.getEmail());
}
logoutBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
});
}
ror :
You could conveniently use this for logout (details are here https://firebase.google.com/docs/auth/android/firebaseui) :
AuthUI.getInstance()
.signOut(this)
.addOnCompleteListener {
// ...
}
For fragment, "this" would have to be replaced with requireContext()
.
Guess you like
Origin http://43.154.161.224:23101/article/api/json?id=238482&siteId=1