"ionic run android"(에뮬레이터 또는 영역 장치)에서 Google+를 사용하여 Ionic2/Angular2 앱에 로그인하려고하면 "null 참조"오류가 계속 발생합니다. 하지만 "ionic serve"를 사용하면 오류가 발생하지 않습니다.Ionic2 Angular2 Typescript2 : NgModule Imports는 언제 Cordova에서 실행됩니까?
"null reference"는 Android로 실행할 때 Firebase를 사용하기 전에 AngularFireModule.initializeApp(firebaseConfig)
이 실행되고 있지 않음을 나타냅니다.
질문 :
- 때 수행하는 웹 브라우저로 볼 때 대 코르도바에
@NgModule
선언 실행의 "수입"부분? -
AngularFireModule.initializeApp(firebaseConfig)
이 (가) 코르도바에서 실행되고 있지 않습니까? 그렇다면 어떻게 확인할 수 있습니까?
은 이온 "을 사용하여 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);
});
}
});
}
오류 (의 일부에
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 {}
구글 로그를 app.module.ts 안드로이드 "파일)
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>