CapacitorGoogleAuth icon indicating copy to clipboard operation
CapacitorGoogleAuth copied to clipboard

I get this error: Error: "GoogleAuth" plugin is not implemented on android

Open alessandrolombardini opened this issue 3 years ago β€’ 49 comments

I'm going crazy, I can't find a way to fix it. Does anyone know how to do it?

alessandrolombardini avatar Jun 11 '21 12:06 alessandrolombardini

I have the same problem! Please help!

chitkosarvesh avatar Jun 14 '21 04:06 chitkosarvesh

same

handihow avatar Jun 15 '21 09:06 handihow

Okay, I resolved this issue I had to update Capacitor to version 3 https://capacitorjs.com/docs/updating/3-0 After I took all the steps, the error disappeared.

handihow avatar Jun 15 '21 11:06 handihow

Same problem, My capacitor is already in 3.0.0, and the GoogleAuth class is not loaded. Any informations?

image

kevinfavv avatar Jun 15 '21 12:06 kevinfavv

yes, you should remove the import of the Google Auth plugin of the MainActivity.java

https://capacitorjs.com/docs/updating/3-0#switch-to-automatic-android-plugin-loading

this means you can comment out / remove the import com.codetrix.....

and also the code inside the BridgeActivity

Make sure that you have installed "@capacitor/cli": "^3.0.1" in the dev dependencies

When you run npx cap sync android, you will see that capacitor now installs all the plugins automatically

handihow avatar Jun 15 '21 13:06 handihow

I followed all the steps for update from capacitor 2 to 3, but I get the same problem. "GoogleAuth.init()" is not implemented on android.

LuisMSotamba avatar Jun 20 '21 00:06 LuisMSotamba

Yeah, I am having the same problem, and if I remove the init(), it keeps stuck in google form...

FabioGoncalves avatar Jun 20 '21 01:06 FabioGoncalves

"GoogleAuth.init()" is only for WEB (https://github.com/CodetrixStudio/CapacitorGoogleAuth#migrate-from-2-to-3).

For Android and iOS is not necessary. I added a condition for checking that:

import { Device, DeviceInfo } from "@capacitor/device";
import { GoogleAuth } from "@codetrix-studio/capacitor-google-auth";

... 

const onSignInGoogle = async () => {
    try {
      const deviceInfo = await Device.getInfo();

      if ((deviceInfo as unknown as DeviceInfo).platform === "web") {
        await GoogleAuth.init();
      }
      const googleUser = (await GoogleAuth.signIn());
 ...

For the original issue, it worked as commented here: https://github.com/CodetrixStudio/CapacitorGoogleAuth/issues/110

DercilioFontes avatar Jun 20 '21 02:06 DercilioFontes

I am doing just like that, but after I choose my Google account, it's always stuck, like this 202778109_586862822298065_4100728333317879213_n

FabioGoncalves avatar Jun 20 '21 10:06 FabioGoncalves

@FabioGoncalves, what are the logs on the Android Studio or Chrome device Dev tools?

DercilioFontes avatar Jun 20 '21 17:06 DercilioFontes

const deviceInfo = await Device.getInfo();

After doing that I'm getting the error: "Device" plugin is not implemented on android

emtiajium avatar Jun 23 '21 18:06 emtiajium

@emtiajium ,

Follow the guide for upgrading Capacitor. It will solve that.

https://capacitorjs.com/docs/updating/3-0

Comment or remove the onCreate method override. It is not necessary anymore.

Switch to automatic Android plugin loading

In Capacitor 3, it is preferred to automatically load the Android plugins. In MainActivity.java, the onCreate method can be removed. You no longer have to edit this file when adding or removing plugins installed via npm.

 public class MainActivity extends BridgeActivity {
//    @Override
//    public void onCreate(Bundle savedInstanceState) {
//        super.onCreate(savedInstanceState);
//
//        // Initializes the Bridge
//        this.init(savedInstanceState, new ArrayList<Class<? extends Plugin>>() {{
//            // Additional plugins you've installed go here
//            add(Plugin1.class);
//            add(Plugin2.class);
//       }});
//   }
 }

But for using the GoogleAuth, you need to register it like that:

import android.os.Bundle;
import com.getcapacitor.BridgeActivity;
import com.codetrixstudio.capacitor.GoogleAuth.GoogleAuth;

public class MainActivity extends BridgeActivity {

     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);

        registerPlugin(GoogleAuth.class);
     }

}

https://capacitorjs.com/docs/updating/3-0#switch-to-automatic-android-plugin-loading

DercilioFontes avatar Jun 23 '21 21:06 DercilioFontes

I followed all the steps but I get an error "c.NativePromise is not a function". Please help find solution to this issue and if possible those who have it work can share their knowledge on the steps and possibly share an example github repo to reference. Thanks in advance

codemickey78 avatar Jun 24 '21 00:06 codemickey78

@codemickey78,

Give more info about what you are trying to achieve. Where and when does this error happen?

DercilioFontes avatar Jun 24 '21 03:06 DercilioFontes

@DercilioFontes

I'm using Ionic Capacitor 3 for my app and I need to authenticate user with Google SignIn. At first, I was using the GooglePlus capacitor plugin which wasn't working but later found out that the CodetrixStudio/CapacitorGoogleAuth was best to integrate.

I used that in my project which worked on iOS without any error but fails on Android with error "c.NativePromise is not a function" which happens to log an error "window.Capacitor.triggerEvent is not a function"

codemickey78 avatar Jun 24 '21 08:06 codemickey78

@codemickey78 ,

I don't know. The best I found was that about dev environment using https, but working with http.

https://github.com/ionic-team/capacitor/issues/4056

DercilioFontes avatar Jun 24 '21 10:06 DercilioFontes

@DercilioFontes This works on Chrome, but on android was not working: this was like, 4 days ago. Today: Is already working :o, maybe I should've waited πŸ’― Thank you, for all the supp guys!

FabioGoncalves avatar Jun 24 '21 12:06 FabioGoncalves

@FabioGoncalves can you please help me solve it? this is the error I'm getting. πŸ‘‡πŸ½πŸ‘‡πŸ½πŸ‘‡πŸ½ Screenshot 2021-06-24 at 12 13 39 PM

codemickey78 avatar Jun 24 '21 12:06 codemickey78

Do you have capacitor 3? Did you follow all the instructions, put the server_client_id in strings.xml, the google-signin-client_id in index.html and added the plugin in the capacitorConfig.json?

Btw, I answered here https://github.com/CodetrixStudio/CapacitorGoogleAuth/issues/109

FabioGoncalves avatar Jun 24 '21 12:06 FabioGoncalves

Do you have capacitor 3? Did you follow all the instructions, put the server_client_id in strings.xml, the google-signin-client_id in index.html and added the plugin in the capacitorConfig.json?

Btw, I answered here #109

I'm also facing the issue, did everything, it works fine for the Web app and neither does for the Android app. I guess it happens because of the "Authorized JavaScript origins", as it does not allow to set the IP address.

emtiajium avatar Jun 24 '21 13:06 emtiajium

@FabioGoncalves Yes, I'm using Capacitor 3, I have configured everything too. Check them hereπŸ‘‡πŸ½ Screenshot 2021-06-24 at 1 40 43 PM πŸ‘‡πŸ½ Screenshot 2021-06-24 at 1 20 44 PM

Screenshot 2021-06-24 at 1 40 29 PM

@emtiajium were you able to make it work?

codemickey78 avatar Jun 24 '21 13:06 codemickey78

Well, are you sure that the error that you showed is about this plugin? I didn't have any error like that one...

That server_client_id, is this one? image You added the SHA1 in firebase and enabled the google log in? image

If so, I am not seeing the problem... the same thing was happening to me, but at least I could choose a google account and then I was stuck in that img that I inserted and that you have to make it too.

FabioGoncalves avatar Jun 24 '21 13:06 FabioGoncalves

@FabioGoncalves Yes, I'm using Capacitor 3, I have configured everything too. Check them hereπŸ‘‡πŸ½ Screenshot 2021-06-24 at 1 40 43 PM πŸ‘‡πŸ½ Screenshot 2021-06-24 at 1 20 44 PM

Screenshot 2021-06-24 at 1 40 29 PM

@emtiajium were you able to make it work?

I added the key in the XML file that is generated by the Firebase (Android client for com.x.y (auto created by Google Service)) BTW, used the other key, (Web client key) for the web app.

So, web app is working and Android app is not

emtiajium avatar Jun 24 '21 14:06 emtiajium

You have to use the same Web client key!!

FabioGoncalves avatar Jun 24 '21 14:06 FabioGoncalves

You have to use the same Web client key!!

Tried with the web client key at the index.html, strings.xml and capacitor.config.json but it produced the same result. When I click the sign-in button, I am able to select the Google user, but after that, it returns me nothing (from the GoogleAuth.signIn())

I couldn't figure it out!

emtiajium avatar Jun 24 '21 14:06 emtiajium

Finally I solved it πŸ₯³πŸ₯³πŸ₯³ But when I select the account, I'm stuck at confirmation popup to allow user. On clicking the "Allow" button it loads the same popup again.

codemickey78 avatar Jun 24 '21 14:06 codemickey78

Yeah, I was in the same situation, but after 2-3 days when I went check again, it was working... xD

FabioGoncalves avatar Jun 24 '21 14:06 FabioGoncalves

@DercilioFontes

I'm using Ionic Capacitor 3 for my app and I need to authenticate user with Google SignIn. At first, I was using the GooglePlus capacitor plugin which wasn't working but later found out that the CodetrixStudio/CapacitorGoogleAuth was best to integrate.

I used that in my project which worked on iOS without any error but fails on Android with error "c.NativePromise is not a function" which happens to log an error "window.Capacitor.triggerEvent is not a function"

I did not get CodetrixStudio/CapacitorGoogleAuth to work in my project . Instead, I had to change to Ionic Google Plus https://ionicframework.com/docs/native/google-plus. I followed all the instructions and its worked in my Angular-Ionic project. I am using capacitor.

Summarizing it. Install the needed packages and sync it.

npm install cordova-plugin-googleplus
npm install @ionic-native/google-plus
ionic cap sync 

Inside app.module import GooglePlus import { GooglePlus } from '@ionic-native/google-plus/ngx'; and insert it as provider.

In you login page, insert:

import { GooglePlus } from '@ionic-native/google-plus/ngx';

constructor(private googlePlus: GooglePlus) { }

...

this.googlePlus.login({})
  .then(res => console.log(res))
  .catch(err => console.error(err));

See https://github.com/EddyVerbruggen/cordova-plugin-googleplus#usage for replace empty object inside googlePlus.login()

Create credentials in Console google https://console.cloud.google.com/ Capture You need SHA-1 certificate thumbprint. For this step, run powershell and go to the directory: C:\Users\your_name_user\.android. Inside this folder, you will find debug.keystore file. Run the following command: keytool -keystore debug.keystore -list -v You get the SHA-1 certificate fingerprint needed for create the google's credentials.

Once you had create the credentials and you had setup your project, run the project on android emulator or physical device and test it.

LuisMSotamba avatar Jun 24 '21 15:06 LuisMSotamba

Well I have it working on android now with CodetrixStudio/CapacitorGoogleAuth πŸ₯³βœŒπŸ½ Ready to launch my app πŸš€πŸ”₯

codemickey78 avatar Jun 24 '21 15:06 codemickey78

What have you done? Just waited? πŸ˜…

FabioGoncalves avatar Jun 24 '21 15:06 FabioGoncalves