A simple android library that lets you easily get an authentication token for the Google Apis.
Java
Latest commit a9b340a Dec 8, 2015 Turhan Oz update README to use Google Sign-in
Permalink
Failed to load latest commit information.
gradle/wrapper initial commit Oct 15, 2015
library remove unecessary folder / specify jdk in travis.yml Oct 17, 2015
sample
.gitignore initial commit Oct 15, 2015
.travis.yml remove unecessary folder / specify jdk in travis.yml Oct 17, 2015
CHANGELOG.md
LICENSE
README.md update README to use Google Sign-in Dec 8, 2015
build.gradle update library build.gradle to upload to mavenCentral Oct 17, 2015
gradle.properties
gradlew initial commit Oct 15, 2015
gradlew.bat initial commit Oct 15, 2015
settings.gradle add library module Oct 15, 2015

README.md

Android RxGoogleAuthentication

Build Status Maven Central Android Arsenal Stories in Ready

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.