Nativescript-plugin-firebase: FacebookSdk.sdkInitialize()

Created on 4 Aug 2016  路  15Comments  路  Source: EddyVerbruggen/nativescript-plugin-firebase

Hi, I'm trying to use Facebook login on Android but It shows an error.

JS: Error in firebase.login: Error: The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.
JS:     com.facebook.internal.Validate.sdkInitialized(Validate.java:145)
JS:     com.facebook.login.LoginManager.<init>(LoginManager.java:68)
JS:     com.facebook.login.LoginManager.getInstance(LoginManager.java:79)
JS:     com.tns.Runtime.callJSMethodNative(Native Method)
JS:     com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:861)
JS:     com.tns.Runtime.callJSMethodImpl(Runtime.java:726)
JS:     com.tns.Runtime.callJSMethod(Runtime.java:712)
JS:     com.tns.Runtime.callJSMethod(Runtime.java:693)
JS:     com.tns.Runtime.callJSMethod(Runtime.java:683)
JS:     com.tns.gen.android.view.GestureDetector_SimpleOnGestureListener_frnal_ts_helpers_l55_c38__TapAndDoubleTapGestureListener.onSingleTapUp(android.view.GestureDetector$SimpleOnGestureListener.java)
JS:     android.view.GestureDetector.onTouchEvent(GestureDetector.java:595)
JS:     android.support.v4.view.GestureDetectorCompat$GestureDetectorCompatImplJellybeanMr2.onTouchEvent(GestureDetectorCompat.java:475)
JS:     android.support.v4.view.GestureDetectorCompat.onTouchEvent(GestureDetectorCompat.java:538)
JS:     com.tns.Runtime.callJSMethodNative(Native Method)
JS:     com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:861)
JS:     com.tns.Runtime.callJSMethodImpl(Runtime.java:726)
JS:     com.tns.Runtime.callJSMethod(Runtime.java:712)
JS:     com.tns.Runtime.callJSMethod(Runtime.java:693)
JS:     com.tns.Runtime.callJSMethod(Runtime.java:683)
JS:     com.tns.gen.android.view.View_OnTouchListener.onTouch(View_OnTouchListener.java:12)
JS:     android.view.View.dispatchTouchEvent(View.java:8582)
JS:     android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
JS:     android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
JS:     android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
JS:     android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
JS:     android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
JS:     android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
JS:     android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
JS:     android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
JS:     android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
JS:     android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
JS:     android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
JS:     android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
JS:     android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
JS:     android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
JS:     com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2482)
JS:     com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1798)
JS:     android.app.Dialog.dispatchTouchEvent(Dialog.java:778)
JS:     com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2443)
JS:     android.view.View.dispatchPointerEvent(View.java:8799)
JS:     android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4662)
JS:     android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4520)
JS:     android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4034)
JS:     android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4087)
JS:     android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4053)
JS:     android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4190)
JS:     android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4061)
JS:     android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4247)
JS:     android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4034)
JS:     android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4087)
JS:     android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4053)
JS:     android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4061)
JS:     android
JS: .view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4034)
JS:     android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6463)
JS:     android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6437)
JS:     android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6390)
JS:     android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6622)
JS:     android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
JS:     android.os.MessageQueue.nativePollOnce(Native Method)
JS:     android.os.MessageQueue.next(MessageQueue.java:148)
JS:     android.os.Looper.loop(Looper.java:151)
JS:     android.app.ActivityThread.main(ActivityThread.java:5643)
JS:     java.lang.reflect.Method.invoke(Native Method)
JS:     java.lang.reflect.Method.invoke(Method.java:372)
JS:     com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
JS:     com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
JS: Error: The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.
JS:     com.facebook.internal.Validate.sdkInitialized(Validate.java:145)
JS:     com.facebook.login.LoginManager.<init>(LoginManager.java:68)
JS:     com.facebook.login.LoginManager.getInstance(LoginManager.java:79)
JS:     com.tns.Runtime.callJSMethodNative(Native Method)
JS:     com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:861)
JS:     com.tns.Runtime.callJSMethodImpl(Runtime.java:726)
JS:     com.tns.Runtime.callJSMethod(Runtime.java:712)
JS:     com.tns.Runtime.callJSMethod(Runtime.java:693)
JS:     com.tns.Runtime.callJSMethod(Runtime.java:683)
JS:     com.tns.gen.android.view.GestureDetector_SimpleOnGestureListener_frnal_ts_helpers_l55_c38__TapAndDoubleTapGestureListener.onSingleTapUp(android.view.GestureDetector$SimpleOnGestureListener.java)
JS:     android.view.GestureDetector.onTouchEvent(GestureDetector.java:595)
JS:     android.support.v4.view.GestureDetectorCompat$GestureDetectorCompatImplJellybeanMr2.onTouchEvent(GestureDetectorCompat.java:475)
JS:     android.support.v4.view.GestureDetectorCompat.onTouchEvent(GestureDetectorCompat.java:538)
JS:     com.tns.Runtime.callJSMethodNative(Native Method)
JS:     com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:861)
JS:     com.tns.Runtime.callJSMethodImpl(Runtime.java:726)
JS:     com.tns.Runtime.callJSMethod(Runtime.java:712)
JS:     com.tns.Runtime.callJSMethod(Runtime.java:693)
JS:     com.tns.Runtime.callJSMethod(Runtime.java:683)
JS:     com.tns.gen.android.view.View_OnTouchListener.onTouch(View_OnTouchListener.java:12)
JS:     android.view.View.dispatchTouchEvent(View.java:8582)
JS:     android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
JS:     android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
JS:     android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
JS:     android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
JS:     android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
JS:     android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
JS:     android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
JS:     android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
JS:     android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
JS:     android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
JS:     android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
JS:     android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
JS:     android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
JS:     android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
JS:     com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2482)
JS:     com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1798)
JS:     android.app.Dialog.dispatchTouchEvent(Dialog.java:778)
JS:     com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2443)
JS:     android.view.View.dispatchPointerEvent(View.java:8799)
JS:     android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4662)
JS:     android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4520)
JS:     android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4034)
JS:     android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4087)
JS:     android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4053)
JS:     android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4190)
JS:     android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4061)
JS:     android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4247)
JS:     android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4034)
JS:     android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4087)
JS:     android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4053)
JS:     android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4061)
JS:     android.view.ViewRootImpl$InputS
JS: tage.deliver(ViewRootImpl.java:4034)
JS:     android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6463)
JS:     android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6437)
JS:     android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6390)
JS:     android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6622)
JS:     android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
JS:     android.os.MessageQueue.nativePollOnce(Native Method)
JS:     android.os.MessageQueue.next(MessageQueue.java:148)
JS:     android.os.Looper.loop(Looper.java:151)
JS:     android.app.ActivityThread.main(ActivityThread.java:5643)
JS:     java.lang.reflect.Method.invoke(Native Method)
JS:     java.lang.reflect.Method.invoke(Method.java:372)
JS:     com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
JS:     com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

Any idea? I already did all the files configuration and set up everything in Facebook. The only thing I'm not sure is the Key-hash because it doesn't appear on my log. It just shows this error. Thanks

Most helpful comment

@PedroAnibarro1 Allright. Thanks for the feedback.
@EddyVerbruggen We should think about delaying FbSdkInit somehow or add a note about where to place firebase.init.

All 15 comments

Are you sure that you have uncommented
compile "com.facebook.android:facebook-android-sdk:4.+"
in node_modules\nativescript-plugin-firebase\platforms\android\include.gradle ?

Also: From where are you calling firebase.login ?

Yes
screen shot 2016-08-04 at 2 23 13 pm

@t-moe I'm calling it from a tap action in a modal page

@t-moe any idea if it may be that the plugin is not installing? I had that problem installing the cocoa for iOS. For some reason it was not installing the pod (cache or something, I don't know)

@PedroAnibarro1 I'm having similar issues on android: From time to time my changes are just not reflected in the build. Because there's no tns clean I normally delete the platform folder and run tns platform add android afterwards again :disappointed:

@t-moe Yeah that sucks.. But anyway, I already did that and nothings change. Do you think that it's that? That the plugin is not installing?

I'm not sure. It could also be that somehow sdkInitialize is in fact not called in your situation.
Are you sure firebase.init() is called and succeeds before you use firebase.login ?

@t-moe I have to say that I'm getting this error.

JS: Error in firebase.init: Error: java.lang.NullPointerException: Argument 'applicationContext' cannot be null
JS:     com.facebook.internal.Validate.notNull(Validate.java:76)
JS:     com.facebook.FacebookSdk.sdkInitialize(FacebookSdk.java:194)
JS:     com.facebook.FacebookSdk.sdkInitialize(FacebookSdk.java:174)
JS:     com.tns.Runtime.runModule(Native Method)
JS:     com.tns.Runtime.runModule(Runtime.java:241)
JS:     com.tns.Runtime.run(Runtime.java:235)
JS:     com.tns.NativeScriptApplication.onCreate(NativeScriptApplication.java:17)
JS:     android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1017)
JS:     android.app.ActivityThread.handleBindApplication(ActivityThread.java:4864)
JS:     android.app.ActivityThread.access$1500(ActivityThread.java:178)
JS:     android.app.ActivityThread$H.handleMessage(ActivityThread.java:1531)
JS:     android.os.Handler.dispatchMessage(Handler.java:111)
JS:     android.os.Looper.loop(Looper.java:194)
JS:     android.app.ActivityThread.main(ActivityThread.java:5643)
JS:     java.lang.reflect.Method.invoke(Native Method)
JS:     java.lang.reflect.Method.invoke(Method.java:372)
JS:     com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
JS:     com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
JS: firebase.init error: Error: java.lang.NullPointerException: Argument 'applicationContext' cannot be null
JS:     com.facebook.internal.Validate.notNull(Validate.java:76)
JS:     com.facebook.FacebookSdk.sdkInitialize(FacebookSdk.java:194)
JS:     com.facebook.FacebookSdk.sdkInitialize(FacebookSdk.java:174)
JS:     com.tns.Runtime.runModule(Native Method)
JS:     com.tns.Runtime.runModule(Runtime.java:241)
JS:     com.tns.Runtime.run(Runtime.java:235)
JS:     com.tns.NativeScriptApplication.onCreate(NativeScriptApplication.java:17)
JS:     android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1017)
JS:     android.app.ActivityThread.handleBindApplication(ActivityThread.java:4864)
JS:     android.app.ActivityThread.access$1500(ActivityThread.java:178)
JS:     android.app.ActivityThread$H.handleMessage(ActivityThread.java:1531)
JS:     android.os.Handler.dispatchMessage(Handler.java:111)
JS:     android.os.Looper.loop(Looper.java:194)
JS:     android.app.ActivityThread.main(ActivityThread.java:5643)
JS:     java.lang.reflect.Method.invoke(Native Method)
JS:     java.lang.reflect.Method.invoke(Method.java:372)
JS:     com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
JS:     com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
D/AccessibilityManager(20738):  at com.tns.Runtime.callJSMethodNative(Native Method)
D/AccessibilityManager(20738):  at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:861)
D/AccessibilityManager(20738):  at com.tns.Runtime.callJSMethodImpl(Runtime.java:726)
D/AccessibilityManager(20738):  at com.tns.Runtime.callJSMethod(Runtime.java:712)
D/AccessibilityManager(20738):  at com.tns.Runtime.callJSMethod(Runtime.java:693)
D/AccessibilityManager(20738):  at com.tns.Runtime.callJSMethod(Runtime.java:683)

But I was kind of ignoring it because I have read that that error shows and the initialization was done because they can use the service.

In my case, I'm using the database feature, no problems with that, and I'm having no trouble using auth with email. The problem is when I call login with Facebook. Again, is working for iOS. The problem is Android.

Ok. That error has definitely something to do with your problem :).
I think you're probably calling firebase.init to early. Where do you call it from?

@t-moe I'm calling it in my main.ts

// this import should be first in order to load some required settings (like globals and reflect-metadata)
import {nativeScriptBootstrap} from "nativescript-angular/application";
import {AppComponent} from "./app.component";

import "reflect-metadata";
import {HTTP_PROVIDERS} from "@angular/http";
import firebase = require("nativescript-plugin-firebase");

import {APP_ROUTER_PROVIDERS} from "./app.routes";
import {VaultService} from "./services/vault/vault.service";
import {MenuService} from "./services/menu/menu.service";

firebase.init({
  // Optionally pass in properties for database, authentication and cloud messaging,
  // see their respective docs.
  // storageBucket: 'gs://al-grano.appspot.com'
  onAuthStateChanged: function(data) { // optional but useful to immediately re-logon the user when he re-visits your app
    console.log(data.loggedIn ? "Logged in to firebase" : "Logged out from firebase");
    if (data.loggedIn) {
      console.log("user's email address: " + (data.user.email ? data.user.email : "N/A"));
    }
  }

}).then(
  (instance) => {
    console.log("firebase.init done");
  },
  (error) => {
    console.log("firebase.init error: " + error);
  }
);

nativeScriptBootstrap(AppComponent, [HTTP_PROVIDERS, APP_ROUTER_PROVIDERS, VaultService, MenuService]);

Yeah, it has to be that. I check on iOS and the error is not showing.

In Android, is actually appearing several times.

Try to move it to another location. Maybe the AppComponent Constructor will work.
Otherwise ngOnInit of your AppComponent.

@t-moe LOOOOOL it worked...... Thanks a lot!!!!!! Really thanks.

If it helps for anyone, I moved the firebase.init to ngOnInit() on my AppComponent.

@PedroAnibarro1 Allright. Thanks for the feedback.
@EddyVerbruggen We should think about delaying FbSdkInit somehow or add a note about where to place firebase.init.

@t-moe @PedroAnibarro1 I just fixed this for #99, thanks!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

thunder413 picture thunder413  路  3Comments

NickIliev picture NickIliev  路  3Comments

SBD580 picture SBD580  路  3Comments

tactusoft picture tactusoft  路  3Comments

tsili852 picture tsili852  路  3Comments