Hello Guys, you can let your users authenticate with Firebase using their Google Accounts by integrating Google Sign-In into your app. Basically, it helps to avoid user to fill up the signup forms and provide them facility of single sign-on.
There are many other social media option available too such as Facebook, etc. In this tutorial, lets us start with Google Sign-In that will let your users authenticate their Google Accounts into your app.
Refer the below link for complete sample code:-
Download Sample Code
Have a look on few code snippets,
//MainActivity.java
There are many other social media option available too such as Facebook, etc. In this tutorial, lets us start with Google Sign-In that will let your users authenticate their Google Accounts into your app.
Refer the below link for complete sample code:-
Download Sample Code
Have a look on few code snippets,
//activity_main.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_margin="16dp" android:gravity="center" android:orientation="vertical" android:layout_height="match_parent"> <com.google.android.gms.common.SignInButton android:id="@+id/btn_login_googleplus" android:layout_width="match_parent" android:layout_gravity="center" android:layout_height="wrap_content" /> <Button android:id="@+id/btn_signout" android:layout_width="match_parent" android:layout_gravity="center" android:text="Sign Out" android:layout_height="wrap_content" /> </LinearLayout> |
//MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | package com.harshalbenake.firebasegooglesignin; import android.content.Intent; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; 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.SignInButton; 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.FirebaseApp; 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 MainActivity extends AppCompatActivity { private static final int RC_SIGN_IN = 1000; private FirebaseAuth mAuth; private GoogleSignInClient mGoogleSignInClient; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initGoogleSignIn(); } @Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. // FirebaseUser currentUser = mAuth.getCurrentUser(); // updateUI(currentUser); } private void initGoogleSignIn() { FirebaseApp.initializeApp(this); mAuth = FirebaseAuth.getInstance(); // Configure Google Sign In GoogleSignInOptions googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken("xxxrequestIdTokenxxx") .requestEmail() .build(); mGoogleSignInClient = GoogleSignIn.getClient(this, googleSignInOptions); SignInButton btn_login_googleplus=(SignInButton)findViewById(R.id.btn_login_googleplus); btn_login_googleplus.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { signIn(); } }); Button btn_signout=(Button)findViewById(R.id.btn_signout); btn_signout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { signOut(); } }); } /** * signs In */ private void signIn() { Intent signInIntent = mGoogleSignInClient.getSignInIntent(); startActivityForResult(signInIntent, RC_SIGN_IN); } /** * sign Out */ private void signOut(){ FirebaseAuth.getInstance().signOut(); } /** * firebase Auths With Google * @param acct */ private void firebaseAuthWithGoogle(GoogleSignInAccount acct) { System.out.println("firebaseAuthWithGoogle:" + acct.getId()); 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 System.out.println("signInWithCredential:success"); FirebaseUser user = mAuth.getCurrentUser(); System.out.println(user.getEmail()+" data: "+user.getDisplayName()); // updateUI(user); } else { System.out.println("signInWithCredential:failure "+task.getException()); } } }); } @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) { System.out.println("Google sign in failed"); } } } } |
No comments:
Post a Comment