1. capacitor-plugin-google-auth

capacitor-plugin-google-auth

CapacitorGoogleAuth

Capacitor plugin for Google Auth.

Install

1. Install package

 npm i --save capacitor-plugin-google-auth

# or for Capacitor 2.x.x
npm i --save [email protected]

2. Update capacitor deps

 npx cap update

3. Migrate from 2 to 3 version

if your migrate from Capacitor 2 to Capacitor 3 see instruction for migrate plugin to new version

Usage

for capacitor 2.x.x use instruction

WEB

Add clientId meta tag to head.

 <meta name="google-signin-client-id" content="{your client id here}">

Add scope meta tag to head.

 <meta name="google-signin-client-scope" content="profile email https://www.googleapis.com/auth/contacts.readonly">

Register plugin and manually initialize

 import { GoogleAuth } from 'capacitor-plugin-google-auth';

GoogleAuth.init()

Use it

 GoogleAuth.signIn()

AngularFire2

 async googleSignIn() {
  let googleUser = await Plugins.GoogleAuth.signIn();
  const credential = auth.GoogleAuthProvider.credential(googleUser.authentication.idToken);
  return this.afAuth.auth.signInAndRetrieveDataWithCredential(credential);
}

Vue 3

 // App.vue
import { defineComponent, onMounted } from 'vue'
import { GoogleAuth } from 'capacitor-plugin-google-auth'

export default defineComponent({
  setup() {
    onMounted(() => {
      GoogleAuth.init()
    })
    
    const logIn = async () => {
      const response = await GoogleAuth.signIn()
      console.log(response)
    }
    
    return {
      logIn
    }
  }
})

iOS

Make sure you have GoogleService-Info.plist with CLIENT_ID

Add REVERSED_CLIENT_ID as url scheme to Info.plist

Android

Inside your strings.xml

 <resources>
  <string name="server_client_id">Your Web Client Key</string>
</resources>

Import package inside your MainActivity

 import com.codetrixstudio.capacitor.GoogleAuth.GoogleAuth;

Register plugin inside your MainActivity.onCreate

 this.init(savedInstanceState, new ArrayList<Class<? extends Plugin>>() {{
  add(GoogleAuth.class);
}});

Configure

Provide configuration in root capacitor.config.json

 {
  "plugins": {
    "GoogleAuth": {
      "scopes": ["profile", "email"],
      "serverClientId": "xxxxxx-xxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
      "forceCodeForRefreshToken" : true
    }
  }
}

Note : forceCodeForRefreshToken force user to select email address to regenerate AuthCode used to get a valid refreshtoken (work on iOS and Android) (This is used for offline access and serverside handling)

Migration guide

Migrate from 2 to 3

After migrate to Capcitor 3 updating you projects, see diff:

WEB
 - import "capacitor-plugin-google-auth";
- import { Plugins } from '@capacitor/core';
+ import { GoogleAuth } from 'capacitor-plugin-google-auth';

- Plugins.GoogleAuth.signIn();
+ GoogleAuth.init()
+ GoogleAuth.signIn()

Forked from CodetrixStudio/CapacitorGoogleAuth