CapacitorGoogleAuth icon indicating copy to clipboard operation
CapacitorGoogleAuth copied to clipboard

Null Pointer Exception on GoogleAuth.load | v3.0+

Open krrssna-g-s opened this issue 3 years ago • 4 comments

Hi,

I was trying to integrated google login for my ionic capacitor app and, It works fine in iOS but in Android app crashes. I see the below error on the logs.

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.navitals.vitals, PID: 8502
    java.lang.NullPointerException: Attempt to invoke virtual method 'int org.json.JSONArray.length()' on a null object reference
        at com.codetrixstudio.capacitor.GoogleAuth.GoogleAuth.load(GoogleAuth.java:47)
        at com.getcapacitor.PluginHandle.load(PluginHandle.java:95)
        at com.getcapacitor.PluginHandle.<init>(PluginHandle.java:59)
        at com.getcapacitor.Bridge.registerPlugin(Bridge.java:503)
        at com.getcapacitor.Bridge.registerAllPlugins(Bridge.java:458)
        at com.getcapacitor.Bridge.<init>(Bridge.java:188)
        at com.getcapacitor.Bridge.<init>(Bridge.java:65)
        at com.getcapacitor.Bridge$Builder.create(Bridge.java:1267)
        at com.getcapacitor.BridgeActivity.load(BridgeActivity.java:72)
        at com.getcapacitor.BridgeActivity.onStart(BridgeActivity.java:110)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1435)
        at android.app.Activity.performStart(Activity.java:8024)
        at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3475)
        at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
        at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
I/Process: Sending signal. PID: 8502 SIG: 9

krrssna-g-s avatar Jul 29 '21 19:07 krrssna-g-s

Same problem. From debugging it looks like it is missing the scopes array from the configuration

JSONArray scopeArray = (JSONArray) getConfigValue("scopes")

I tried adding the scopes to the capacitor.config.json but this did not help.

pubkey avatar Aug 05 '21 00:08 pubkey

I could fix this by adding the plugin config with the scopes to my capacitor.config.ts

const config: CapacitorConfig = {
  appId: 'foo.bar',
  appName: 'foobar',
  plugins: {
    GoogleAuth: {
      scopes: [
        'profile',
        'email'
      ],
      serverClientId: '.....apps.googleusercontent.com',
      forceCodeForRefreshToken: true
    }
  }
};

pubkey avatar Aug 05 '21 00:08 pubkey

I could fix this by adding the plugin config with the scopes to my capacitor.config.ts

const config: CapacitorConfig = {
  appId: 'foo.bar',
  appName: 'foobar',
  plugins: {
    GoogleAuth: {
      scopes: [
        'profile',
        'email'
      ],
      serverClientId: '.....apps.googleusercontent.com',
      forceCodeForRefreshToken: true
    }
  }
};

Thank you so much @pubkey

iChristosK avatar Dec 27 '21 19:12 iChristosK

It works. Thank you so much @pubkey

yeonjaee avatar Jul 26 '23 08:07 yeonjaee