Я продолжаю получать ошибку «нулевой ссылки», когда пытаюсь войти в мое приложение Ionic2/Angular2, используя Google+, когда я «ионный бегущий Android» (эмулятор или на наземном устройстве). Но я не получаю эту ошибку, когда использую «ионную подачу».Ionic2 Angular2 Typcript2: Когда NgModule Imports работает на Кордове?
«Нулевая ссылка» указывает, что AngularFireModule.initializeApp(firebaseConfig)
не запускается, прежде чем пытаться использовать Firebase при работе под управлением Android.
Вопросы:
- Когда делает «импорт» часть
@NgModule
декларации бега на Кордова против при просмотре в веб-браузере? - Я исправлю в своем предположении , что
AngularFireModule.initializeApp(firebaseConfig)
не используется в Кордове? Если да, то как мне лучше всего подтвердить?
app.module.ts
import { NgModule } from '@angular/core';
import { IonicApp, IonicModule } from 'ionic-angular';
import { MyApp } from './app.component';
import { FormsModule } from '@angular/forms';
// Pages
import { ForgotPasswordPage } from '../pages/auth/forgot-password/forgot-password';
import { AuthPage } from '../pages/auth/home/home';
import { LoginEmailPage } from '../pages/auth/login-email/login-email';
import { AboutPage } from '../pages/about/about';
import { ContactPage } from '../pages/contact/contact';
import { SignUpPage } from '../pages/auth/sign-up/sign-up';
import { HomePage } from '../pages/home/home';
import { TermsOfServicePage } from '../pages/terms-of-service/terms-of-service';
import { TabsPage } from '../pages/tabs/tabs';
import { AngularFireModule } from 'angularfire2';
// Providers
import { DataProvider } from '../providers/data';
import { AuthProvider } from '../providers/auth';
export const firebaseConfig = {
apiKey: '****',
authDomain: '****.firebaseapp.com',
databaseURL: 'https://****.firebaseio.com/',
storageBucket: '****.appspot.com',
};
@NgModule({
declarations: [
MyApp,
ForgotPasswordPage,
AuthPage,
LoginEmailPage,
SignUpPage,
AboutPage,
ContactPage,
TermsOfServicePage,
HomePage,
TabsPage
],
imports: [
AngularFireModule.initializeApp(firebaseConfig),
IonicModule.forRoot(MyApp),
FormsModule
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
ForgotPasswordPage,
AuthPage,
LoginEmailPage,
SignUpPage,
AboutPage,
ContactPage,
HomePage,
TabsPage,
TermsOfServicePage
],
providers: [
DataProvider,
AuthProvider
]
})
export class AppModule {}
журнал Google в части auth.ts
loginWithGooglePlus() {
return Observable.create(observer => {
if (this.platform.is('cordova')) {
GooglePlus.login(['public_profile', 'email']).then(googlePlusData => {
let provider = firebase.auth.GoogleAuthProvider.credential(googlePlusData.authResponse.accessToken);
firebase.auth().signInWithCredential(provider).then(firebaseData => {
// process user data
observer.next();
});
}, error => {
observer.error(error);
});
} else {
this.af.auth.login({
provider: AuthProviders.Google,
method: AuthMethods.Popup
}).then((googlePlusData) => {
// process user data
observer.next();
}).catch((error) => {
console.info("error", error);
observer.error(error);
});
}
});
}
Ошибка (как показано в Android Studio, с помощью «ионной build android ")
E/PluginManager: Uncaught exception from plugin
java.lang.NullPointerException: null reference
at com.google.android.gms.common.internal.zzaa.zzy(Unknown Source)
at com.google.android.gms.auth.api.signin.internal.zzc.getSignInIntent(Unknown Source)
at nl.xservices.plugins.GooglePlus.signIn(GooglePlus.java:165)
at nl.xservices.plugins.GooglePlus.execute(GooglePlus.java:70)
at org.apache.cordova.CordovaPlugin.execute(CordovaPlugin.java:117)
at org.apache.cordova.CordovaPlugin.execute(CordovaPlugin.java:98)
at org.apache.cordova.PluginManager.exec(PluginManager.java:132)
at org.apache.cordova.CordovaBridge.jsExec(CordovaBridge.java:57)
at org.apache.cordova.engine.SystemExposedJsApi.exec(SystemExposedJsApi.java:41)
at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:53)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.os.HandlerThread.run(HandlerThread.java:61)
Это в config.xml файле
<plugin name="cordova-plugin-googleplus" spec="~5.1.1">
<variable name="REVERSED_CLIENT_ID" value="com.****.****" />
</plugin>