public class MainActivity extends AppCompatActivity {
private GoogleSignInClient mGoogleSignInClient;
private Button msignout;
private TextView username;
private SignInButton mSignInButton;
private static final int REQUEST_CODE=100;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
msignout=findViewById(R.id.signout);
username=findViewById(R.id.textView);
mSignInButton=findViewById(R.id.googlee);
mAuth=FirebaseAuth.getInstance();
GoogleSignInOptions googleSignInOptions=
new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestIdToken(getString(R.string.default_web_client_id))
.build();
mGoogleSignInClient= GoogleSignIn.getClient(this,googleSignInOptions);
GoogleSignInAccount account=GoogleSignIn.getLastSignedInAccount(this);
UpdateUi(mAuth.getCurrentUser());
mSignInButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent signIntent=mGoogleSignInClient.getSignInIntent();
startActivityForResult(signIntent,REQUEST_CODE);
}
});
msignout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/* mGoogleSignInClient.revokeAccess()
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful())
{
Toast.makeText(MainActivity.this, "user is signout", Toast.LENGTH_SHORT).show();
UpdateUi(GoogleSignIn.getLastSignedInAccount(MainActivity.this));
}else
{
Toast.makeText(MainActivity.this, "Error is occured", Toast.LENGTH_SHORT).show();
}
}
});*/
mAuth.signOut();
UpdateUi(mAuth.getCurrentUser());
}
});
}
// private void UpdateUi(GoogleSignInAccount account) {
private void UpdateUi(FirebaseUser firebaseUser) {
if (firebaseUser != null) {
msignout.setVisibility(View.INVISIBLE);
username.setText(firebaseUser.getDisplayName() + "\n" + firebaseUser.getEmail());
msignout.setVisibility(View.VISIBLE);
} else {
msignout.setVisibility(View.INVISIBLE);
username.setText("user is not signed");
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE) {
Task<GoogleSignInAccount> accountTask = GoogleSignIn.getSignedInAccountFromIntent(data);
HandleSigned(accountTask);
}
}
private void HandleSigned(Task<GoogleSignInAccount> accountTask) {
try {
GoogleSignInAccount account = accountTask.getResult(ApiException.class);
firebaseAuthwithGoogle(account);
// UpdateUi(account);
} catch (ApiException e) {
username.setText(GoogleSignInStatusCodes.getStatusCodeString(e.getStatusCode()));
}
}
private void firebaseAuthwithGoogle(GoogleSignInAccount account) {
AuthCredential authCredential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
mAuth.signInWithCredential(authCredential)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Toast.makeText(MainActivity.this, "user is logined", Toast.LENGTH_SHORT).show();
FirebaseUser user = mAuth.getCurrentUser();
UpdateUi(user);
} else {
Toast.makeText(MainActivity.this, "Error", Toast.LENGTH_SHORT).show();
}
}
});
}
}
No comments:
Post a Comment