Integrate Google Sign In
Google Sign In with Helper class
Section titled “Google Sign In with Helper class”Add below to your build.gradle out of android tag:
// Apply plug-in to app.apply plugin: 'com.google.gms.google-services'Add below helper class to your util package:
/** * Created by Andy */public class GoogleSignInHelper implements GoogleApiClient.OnConnectionFailedListener, GoogleApiClient.ConnectionCallbacks { private static final String TAG = GoogleSignInHelper.class.getSimpleName();
private static GoogleSignInHelper googleSignInHelper; private AppCompatActivity mActivity; private GoogleApiClient mGoogleApiClient; public static final int RC_SIGN_IN = 9001; private boolean isLoggingOut = false;
public static GoogleSignInHelper newInstance(AppCompatActivity mActivity) { if (googleSignInHelper == null) { googleSignInHelper = new GoogleSignInHelper(mActivity, fireBaseAuthHelper); } return googleSignInHelper; }
public GoogleSignInHelper(AppCompatActivity mActivity) { this.mActivity = mActivity; initGoogleSignIn(); }
private void initGoogleSignIn() { // [START config_sign_in] // Configure Google Sign In GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(mActivity.getString(R.string.default_web_client_id)) .requestEmail() .build(); // [END config_sign_in]
mGoogleApiClient = new GoogleApiClient.Builder(mActivity) .enableAutoManage(mActivity /* FragmentActivity */, this /* OnConnectionFailedListener */) .addApi(Auth.GOOGLE_SIGN_IN_API, gso) .addConnectionCallbacks(this) .build();
}
@Override public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { // An unresolvable error has occurred and Google APIs (including Sign-In) will not // be available. Log.d(TAG, "onConnectionFailed:" + connectionResult); Toast.makeText(mActivity, "Google Play Services error.", Toast.LENGTH_SHORT).show(); }
public void getGoogleAccountDetails(GoogleSignInResult result) { // Google Sign In was successful, authenticate with FireBase GoogleSignInAccount account = result.getSignInAccount(); // You are now logged into Google } public void signOut() {
if (mGoogleApiClient.isConnected()) {
// Google sign out Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback( new ResultCallback<Status>() { @Override public void onResult(@NonNull Status status) { isLoggingOut = false; } }); } else { isLoggingOut = true; } }
public GoogleApiClient getGoogleClient() { return mGoogleApiClient; }
@Override public void onConnected(@Nullable Bundle bundle) { Log.w(TAG, "onConnected"); if (isLoggingOut) { signOut(); } }
@Override public void onConnectionSuspended(int i) { Log.w(TAG, "onConnectionSuspended"); }}Add below code to your OnActivityResult in Activity file:
// [START onactivityresult] @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 == GoogleSignInHelper.RC_SIGN_IN) { GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); if (result.isSuccess()) { googleSignInHelper.getGoogleAccountDetails(result); } else { // Google Sign In failed, update UI appropriately // [START_EXCLUDE] Log.d(TAG, "signInWith Google failed"); // [END_EXCLUDE] } } } // [END onactivityresult]
// [START signin] public void signIn() { Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(googleSignInHelper.getGoogleClient()); startActivityForResult(signInIntent, GoogleSignInHelper.RC_SIGN_IN); }
// [END signin]Syntax
Section titled “Syntax”- newInstance() - To create single instance of Google Helper
- initGoogleSignIn() - To initialize Google log in
- getGoogleAccountDetails() - To get logged in Account details
- signOut() - To log out user
- getGoogleClient() - To get GoogleApiClient used
Parameters
Section titled “Parameters”|Parameter|Detail |---|---|---|---|---|---|---|---|---|--- |TAG|A String used while logging |GoogleSignInHelper|A static reference for helper |AppCompatActivity|An Activity reference |GoogleApiClient|A reference of GoogleAPIClient |RC_SIGN_IN|An integer represents activity result constant |isLoggingOut|A boolean to check if log-out task is running or not