Android Rx Google Authentication

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

License

License

GroupId

GroupId

com.turhanoz.android
ArtifactId

ArtifactId

rxgoogleauthentication
Last Version

Last Version

0.0.1
Release Date

Release Date

Type

Type

aar.asc
Description

Description

Android Rx Google Authentication
A simple android library that lets you easily get an authentication token for the Google Apis.
Project URL

Project URL

https://github.com/TurhanOz/RxGoogleAuthentication
Source Code Management

Source Code Management

https://github.com/TurhanOz/RxGoogleAuthentication

Download rxgoogleauthentication

Dependencies

compile (5)

Group / Artifact Type Version
io.reactivex : rxandroid jar 1.0.1
com.android.support » multidex jar 1.0.1
io.reactivex : rxjava jar 1.0.14
com.google.android.gms » play-services jar 8.1.0
com.android.support » appcompat-v7 jar 23.0.1

Project Modules

There are no modules declared in this project.

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.

Versions

Version
0.0.1