Search..

Wednesday, July 22, 2020

How to add google sign in your progarm





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