# GoogleSignIn
 This plugin allows you to authenticate and identify users with Google Sign-in on Android.
 
 This project is inspired on two other Cordova plugins: https://github.com/EddyVerbruggen/cordova-plugin-googleplus and https://github.com/artberri/cordova-plugin-play-games-services. The difference is that this plugin wraps the new GoogleSignInClient class instead of the deprecated GoogleApiClient (see https://android-developers.googleblog.com/2017/11/moving-past-googleapiclient_21.html).

 Requirements

    compileSdkVersion 28 or later.

 Install

    ionic cordova plugin add https://github.com/rogeriotakejame/googlesignin --variable APP_ID=your_app_id

    Where your_app_id is your 12 digit id registered on Google (TODO how)

 Usage
    

    cordova.plugins.GoogleSignIn.getLastSignedInAccount(
        function(res) {
            // Success
            console.log(res);
        }, 
        function(err) {
            // Failure
            console.error(err);
        }
    );

    cordova.plugins.GoogleSignIn.signIn(
        {
            signInMode:this.signInMode,
            scopes:this.selectedScopes,
            webClientId:this.webClientId
        },
        function(res) {
            // Success
            console.log(res);
        },
        function(err) {
            // Failure
            console.error(err);
        }
    );
    
    cordova.plugins.GoogleSignIn.silentSignIn(
        {
            signInMode:this.signInMode,
            scopes:this.selectedScopes,
            webClientId:this.webClientId
        },
        function(res) {
            // Success
            console.log(res);
        },
        function(err) {
            // Failure
            console.error(err);
        }
    );

    cordova.plugins.GoogleSignIn.signOut(
        function(res) {
            // Success
            console.log(res);
        }, 
        function(err) {
            // Failure
            console.error(err);
        }
    );

    cordova.plugins.GoogleSignIn.revokeAccess(
        function(res) {
            // Success
            console.log(res);
        }, 
        function(err) {
            // Failure
            console.error(err);
        }
    );

    cordova.plugins.GoogleSignIn.isGooglePlayServicesAvailable(
        function(res) {
            // Success
            console.log(res);
        }, 
        function(err) {
            // Failure
            console.error(err);
        }
    );


Default sign in
scopes empty / "profile" / "id"
{
    SUCCESS: 0
    displayName: "Rogerio Takejame"
    familyName: "Takejame"
    givenName: "Rogerio"
    grantedScopes: "[https://www.googleapis.com/auth/userinfo.profile, openid, profile]"
    statusCode: 0
    userId: "110074068522070375111"
}
scopes "email"
{
    SUCCESS: 0
    displayName: "Rogerio Takejame"
    email: "rogerio.takejame@gmail.com"
    familyName: "Takejame"
    givenName: "Rogerio"
    grantedScopes: "[https://www.googleapis.com/auth/userinfo.profile, https://www.googleapis.com/auth/userinfo.email, openid, profile, email]"
    statusCode: 0
    userId: "110074068522070375111"
}

scopes "idtoken"
{
    SUCCESS: 0
    displayName: "Rogerio Takejame"
    familyName: "Takejame"
    givenName: "Rogerio"
    grantedScopes: "[https://www.googleapis.com/auth/userinfo.profile, openid, profile]"
    idToken: "eyJhb...1QifQ.eyJpc...MxMX0.D91y3...SLzCw"
    imageUrl: "https://lh3.googleusercontent.com/-0U...s96-c/photo.jpg"
    statusCode: 0
    userId: "110074068522070375111"
}
scopes "serverauthcode"
{
    SUCCESS: 0
    displayName: "Rogerio Takejame"
    familyName: "Takejame"
    givenName: "Rogerio"
    grantedScopes: "[https://www.googleapis.com/auth/userinfo.profile, openid, profile]"
    serverAuthCode: "4/3wFad...YYRDg-lZHBU1...7rWIY"
    statusCode: 0
    userId: "110074068522070375111"
}

Games sign in
{
    grantedScopes: "[https://www.googleapis.com/auth/games_lite]",
    statusCode: 0,
    SUCCESS: 0
}

scopes "id"
{
    SUCCESS: 0
    grantedScopes: "[openid, https://www.googleapis.com/auth/games_lite]"
    statusCode: 0
    userId: "110074068522070375111"
}
scopes "email"
{
    SUCCESS: 0
    email: "rogerio.takejame@gmail.com"
    grantedScopes: "[https://www.googleapis.com/auth/userinfo.email, openid, email, https://www.googleapis.com/auth/games_lite]"
    statusCode: 0
    userId: "110074068522070375111"
}
scopes "profile"
{
    SUCCESS: 0
    displayName: "Rogerio Takejame"
    familyName: "Takejame"
    givenName: "Rogerio"
    grantedScopes: "[https://www.googleapis.com/auth/userinfo.profile, profile, https://www.googleapis.com/auth/games_lite]"
    statusCode: 0
}
scopes "idtoken"
{
    SUCCESS: 0
    grantedScopes: "[openid, https://www.googleapis.com/auth/games_lite]"
    idToken: "eyJh8...dw4fQ.eyJpc...U1MH0.h7raL...FuCAA"
    statusCode: 0
    userId: "110074068522070375111"
}
scopes "serverauthcode"
{
    SUCCESS: 0
    grantedScopes: "[https://www.googleapis.com/auth/games_lite]"
    serverAuthCode: "4/3wESi...wbfyG-D3J45...8vSbs"
    statusCode: 0
}
error
{
    API_NOT_CONNECTED: 17
    CANCELED: 16
    DEVELOPER_ERROR: 10
    ERROR: 13
    INTERNAL_ERROR: 8
    INTERRUPTED: 14
    INVALID_ACCOUNT: 5
    NETWORK_ERROR: 7
    RESOLUTION_REQUIRED: 6
    SERVICE_DISABLED: 3
    SERVICE_VERSION_UPDATE_REQUIRED: 2
    SIGN_IN_CANCELLED: 12501
    SIGN_IN_CURRENTLY_IN_PROGRESS: 12502
    SIGN_IN_FAILED: 12500
    SIGN_IN_REQUIRED: 4
    SUCCESS: 0
    SUCCESS_CACHE: -1
    TIMEOUT: 15
    className: "com.google.android.gms.common.api.ApiException"
    statusCode: 4
}