Capacitor plugin for Google Auth.
PRs are welcome and much appreciated that keeps this plugin up to date with Capacitor and official Google Auth platform library feature parity.
Try to follow good code practices. You can even help keeping the included demo updated.
PRs for features that are not aligned with the official Google Auth library are discouraged.
(We are beginner-friendly here)
npm i --save @codetrix-studio/capacitor-google-auth
# or for Capacitor 2.x.x
npm i --save @codetrix-studio/[email protected]
npx cap update
if your migrate from Capacitor 2 to Capacitor 3 see instruction for migrate plugin to new version
for capacitor 2.x.x use instruction
Add clientId
meta tag to head.
<meta name="google-signin-client_id" content="{your client id here}">
Register plugin and manually initialize
import { GoogleAuth } from '@codetrix-studio/capacitor-google-auth';
GoogleAuth.init()
Use it
GoogleAuth.signIn()
async googleSignIn() {
let googleUser = await Plugins.GoogleAuth.signIn();
const credential = auth.GoogleAuthProvider.credential(googleUser.authentication.idToken);
return this.afAuth.auth.signInAndRetrieveDataWithCredential(credential);
}
// App.vue
import { defineComponent, onMounted } from 'vue'
import { GoogleAuth } from '@codetrix-studio/capacitor-google-auth'
export default defineComponent({
setup() {
onMounted(() => {
GoogleAuth.init()
})
const logIn = async () => {
const response = await GoogleAuth.signIn()
console.log(response)
}
return {
logIn
}
}
})
Make sure you have GoogleService-Info.plist
with CLIENT_ID
Add REVERSED_CLIENT_ID
as url scheme to Info.plist
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);
}});
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)
After migrate to Capcitor 3 updating you projects, see diff:
- import "@codetrix-studio/capacitor-google-auth";
- import { Plugins } from '@capacitor/core';
+ import { GoogleAuth } from '@codetrix-studio/capacitor-google-auth';
- Plugins.GoogleAuth.signIn();
+ GoogleAuth.init()
+ GoogleAuth.signIn()