Created
June 2, 2018 12:11
-
-
Save MilanPokharna/7add722b012c8c03dae716ec80ed7d7b to your computer and use it in GitHub Desktop.
GoogleSignIn
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package com.example.lenovo.button3d; | |
| import android.app.Activity; | |
| import android.content.Intent; | |
| import android.support.annotation.NonNull; | |
| import android.support.design.widget.Snackbar; | |
| import android.support.v7.app.AppCompatActivity; | |
| import android.os.Bundle; | |
| import android.util.Log; | |
| import android.view.View; | |
| import android.widget.Button; | |
| import android.widget.Toast; | |
| import com.google.android.gms.auth.api.signin.GoogleSignIn; | |
| import com.google.android.gms.auth.api.signin.GoogleSignInAccount; | |
| import com.google.android.gms.auth.api.signin.GoogleSignInClient; | |
| import com.google.android.gms.auth.api.signin.GoogleSignInOptions; | |
| import com.google.android.gms.common.api.ApiException; | |
| import com.google.android.gms.tasks.OnCompleteListener; | |
| import com.google.android.gms.tasks.Task; | |
| import com.google.firebase.auth.AuthCredential; | |
| import com.google.firebase.auth.AuthResult; | |
| import com.google.firebase.auth.FirebaseAuth; | |
| import com.google.firebase.auth.FirebaseUser; | |
| import com.google.firebase.auth.GoogleAuthProvider; | |
| public class startActivity extends AppCompatActivity { | |
| private static final int RC_SIGN_IN = 1; | |
| private FirebaseAuth mAuth; | |
| Button googleButton; | |
| private GoogleSignInClient mGoogleSignInClient; | |
| @Override | |
| protected void onCreate(Bundle savedInstanceState) { | |
| super.onCreate(savedInstanceState); | |
| setContentView(R.layout.activity_start); | |
| googleButton = (Button)findViewById(R.id.googleButton); | |
| // Configure Google Sign In | |
| GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) | |
| .requestIdToken(getString(R.string.default_web_client_id)) | |
| .requestEmail() | |
| .build(); | |
| mGoogleSignInClient = GoogleSignIn.getClient(this, gso); | |
| mAuth = FirebaseAuth.getInstance(); | |
| googleButton.setOnClickListener(new View.OnClickListener() { | |
| @Override | |
| public void onClick(View view) { | |
| signIn(); | |
| } | |
| }); | |
| } | |
| private void updateUI(FirebaseUser user) { | |
| if (user != null) { | |
| Intent intent = new Intent(startActivity.this,starterActivity.class); | |
| startActivity(intent); | |
| finish(); | |
| } | |
| } | |
| 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, "Google Sign in failed", 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 | |
| Toast.makeText(startActivity.this, "Google sign in successfull", Toast.LENGTH_SHORT).show(); | |
| FirebaseUser user = mAuth.getCurrentUser(); | |
| updateUI(user); | |
| } else { | |
| // If sign in fails, display a message to the user. | |
| Toast.makeText(startActivity.this, "Google sign in failure", Toast.LENGTH_SHORT).show(); | |
| updateUI(null); | |
| } | |
| // ... | |
| } | |
| }); | |
| } | |
| @Override | |
| public void onStart() { | |
| super.onStart(); | |
| // Check if user is signed in (non-null) and update UI accordingly. | |
| FirebaseUser currentUser = mAuth.getCurrentUser(); | |
| updateUI(currentUser); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment