例外:在 ionic 2 应用程序中使用 facebook 登录后未捕获(承诺)
Exception: uncaught (in promise) after login with facebook in ionic 2 app
我收到这个错误
Exception: uncaught (in promise) :false
在我的 ionic 2 应用程序中使用 Facebook 登录后。
连接成功但我收到此错误。
我的app.component.ts
import { Component,ViewChild } from '@angular/core';
import { Platform,Nav, LoadingController} from 'ionic-angular';
import { StatusBar, Splashscreen } from 'ionic-native';
//import pages
import { HomePage } from '../pages/home/home';
import { LoginPage } from '../pages/login/login';
import { SignupPage } from '../pages/signup/signup';
import { TabsPage } from '../pages/tabs/tabs';
import { AboutPage } from '../pages/about/about';
import {StudentsPage} from '../pages/students/students';
//import plugins
//import firebase from 'firebase';
import {AngularFire, FirebaseListObservable} from 'angularfire2';
@Component({
template: `<ion-nav [root]="rootPage"></ion-nav>`
})
export class MyApp {
@ViewChild(Nav) nav: Nav;
public rootPage:any;
//ref firebase
public semesters:any;
public userProfile: any;
//user variables
public currentUser: any;
public id_user:any;
public reg_boolean:any="true";
public department:any;
public year:any;
public semester:any;
public semesterdetails:any;
user = {};
constructor(platform: Platform, public loadingCtrl: LoadingController,public af: AngularFire){
this.af.auth.subscribe(user => {
if(user) {
this.rootPage = SignupPage;
console.log("connected success");
}
else {
// user not logged in
this.user = {};
this.rootPage=LoginPage;
}
});
}
}
我的login.ts
import { Component } from '@angular/core';
import {NavController,LoadingController,AlertController } from 'ionic-angular';
//import pagess
import { HomePage } from '../home/home';
//import cordova plugins
import { Facebook } from 'ionic-native';
import firebase from 'firebase';
/*
Generated class for the LoginPage page.
See http://ionicframework.com/docs/v2/components/#navigation for more info on
Ionic pages and navigation.
*/
@Component({
selector: 'page-login',
templateUrl: 'login.html'
})
export class LoginPage {
userProfile: any = null;
loading: any;
constructor(public nav: NavController, public alertCtrl: AlertController, public loadingCtrl: LoadingController) {}
ionViewDidLoad() {
}
facebookLogin(){
Facebook.login(['email']).then( (response) => {
let facebookCredential = firebase.auth.FacebookAuthProvider.credential(response.authResponse.accessToken);
var that = this;
firebase.auth().signInWithCredential(facebookCredential)
.then((success) => {
console.log("Firebase success: " + JSON.stringify(success));
that.userProfile = success;
console.log(that.userProfile);
// that.nav.setRoot(HomePage); // after login in it goes to homepage
})
.catch((error) => {
console.log("Firebase failure: " + JSON.stringify(error));
});
}).catch((error) => { console.log(error) });
let loader = this.loadingCtrl.create({
dismissOnPageChange: true,
});
loader.present();
}
GmailLogin(){
}
}
我尝试检查我的问题是什么,但我没有发现任何问题。我也检查了 android 模拟器,仍然是同样的问题。
这是由于 ionic-2 rc4
中的一个错误。设置 dismissOnPageChange: true
时发生。看看这个 issue 。这已在 rc5
中修复,请查看。
我收到这个错误
Exception: uncaught (in promise) :false
在我的 ionic 2 应用程序中使用 Facebook 登录后。
连接成功但我收到此错误。
我的app.component.ts
import { Component,ViewChild } from '@angular/core';
import { Platform,Nav, LoadingController} from 'ionic-angular';
import { StatusBar, Splashscreen } from 'ionic-native';
//import pages
import { HomePage } from '../pages/home/home';
import { LoginPage } from '../pages/login/login';
import { SignupPage } from '../pages/signup/signup';
import { TabsPage } from '../pages/tabs/tabs';
import { AboutPage } from '../pages/about/about';
import {StudentsPage} from '../pages/students/students';
//import plugins
//import firebase from 'firebase';
import {AngularFire, FirebaseListObservable} from 'angularfire2';
@Component({
template: `<ion-nav [root]="rootPage"></ion-nav>`
})
export class MyApp {
@ViewChild(Nav) nav: Nav;
public rootPage:any;
//ref firebase
public semesters:any;
public userProfile: any;
//user variables
public currentUser: any;
public id_user:any;
public reg_boolean:any="true";
public department:any;
public year:any;
public semester:any;
public semesterdetails:any;
user = {};
constructor(platform: Platform, public loadingCtrl: LoadingController,public af: AngularFire){
this.af.auth.subscribe(user => {
if(user) {
this.rootPage = SignupPage;
console.log("connected success");
}
else {
// user not logged in
this.user = {};
this.rootPage=LoginPage;
}
});
}
}
我的login.ts
import { Component } from '@angular/core';
import {NavController,LoadingController,AlertController } from 'ionic-angular';
//import pagess
import { HomePage } from '../home/home';
//import cordova plugins
import { Facebook } from 'ionic-native';
import firebase from 'firebase';
/*
Generated class for the LoginPage page.
See http://ionicframework.com/docs/v2/components/#navigation for more info on
Ionic pages and navigation.
*/
@Component({
selector: 'page-login',
templateUrl: 'login.html'
})
export class LoginPage {
userProfile: any = null;
loading: any;
constructor(public nav: NavController, public alertCtrl: AlertController, public loadingCtrl: LoadingController) {}
ionViewDidLoad() {
}
facebookLogin(){
Facebook.login(['email']).then( (response) => {
let facebookCredential = firebase.auth.FacebookAuthProvider.credential(response.authResponse.accessToken);
var that = this;
firebase.auth().signInWithCredential(facebookCredential)
.then((success) => {
console.log("Firebase success: " + JSON.stringify(success));
that.userProfile = success;
console.log(that.userProfile);
// that.nav.setRoot(HomePage); // after login in it goes to homepage
})
.catch((error) => {
console.log("Firebase failure: " + JSON.stringify(error));
});
}).catch((error) => { console.log(error) });
let loader = this.loadingCtrl.create({
dismissOnPageChange: true,
});
loader.present();
}
GmailLogin(){
}
}
我尝试检查我的问题是什么,但我没有发现任何问题。我也检查了 android 模拟器,仍然是同样的问题。
这是由于 ionic-2 rc4
中的一个错误。设置 dismissOnPageChange: true
时发生。看看这个 issue 。这已在 rc5
中修复,请查看。