RxGoogleAuthentication

Additional

Language
Java
Version
0.0.1 (Oct 19, 2015)
Created
Oct 17, 2015
Updated
Mar 27, 2022 (Retired)
Owner
TurhanOz
Activity
Badge
Generate
Download
Source code

Android RxGoogleAuthentication

A simple android library that lets you easily get an authentication token for the Google Apis.

This library has been developed using RxJava. It also integrates relevant unit tests and a sample application.

Motivation

If you are an android developer, chances are that you will, one day or another, use one of the Google Rest Apis. Most of the Google Rest Apis require authentication. So you'll start reading the documentation in order to understand how to get authenticated. The more I looked to that documentation, the more I was sceptical about the sample code provided in it. Indeed, the token fetched is done through a AsyncTask. As a matter of fact, notifying the Ui is done is done though runOnUiThread() in case of Exception... Lot's of 'stuff' I dislike. And no code quality given with the snipets...

So I decided to create this library, using RxJava and providing clean Unit Tests.

Update

You can also use Google Sign-In as part of the Google Play Services. This API is more elegant and allows easy oauth2 flow.

Usage

From Maven Central

Library releases are available on Maven Central; you can add dependencies as follow :

Gradle

compile 'com.turhanoz.android.rxgoogleauthentication:0.0.1@aar'

Maven

<dependency>
  <groupId>com.turhanoz.android</groupId>
  <artifactId>rxgoogleauthentication</artifactId>
  <version>0.0.1</version>
  <type>aar</type>
</dependency>

Supported Android SDK

You can use this library for apps starting from android 2.3.3 (gingerbread /API 10) to android 6 (marshmallow / API 23)

minSdkVersion 10
targetSdkVersion 23

Usage

//trigger a token request by using this builder:
private void fetchToken(){
    new AuthSubscription()
        .setEmail("email")
        .setScope("scope")
        .setActivity(getActivity())
        .setCallback(this)
        .buildAndSubscribe();
}

//get token through this callback
public interface AuthCallback {
    public void onTokenReceived(AuthToken token);
    public void onError(Throwable e);
}

//relevant exceptions are handled silently by the library
//such as GooglePlayServicesAvailabilityException and UserRecoverableAuthException
//in case of another kind of exceptions, you can handle it on the OnActivityResult callback
//in your fragment or activity
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if ((requestCode == AuthObserver.REQUEST_CODE_RECOVER_FROM_PLAY_SERVICES_ERROR)
        && resultCode == getActivity().RESULT_OK) {
            // Receiving a result that follows a GoogleAuthException, try auth again
            fetchToken();
        } else if (resultCode == getActivity().RESULT_CANCELED) {
            //notify ui
        }
    }

License

Copyright 2015 Turhan OZ

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.