Promise Return函数未调用

时间:2017-01-18 07:28:55

标签: javascript firebase ionic2 firebase-authentication angularfire2

我正在使用Ionic2 rc4。我正在尝试使用Firebase对用户进行身份验证。我有以下与Firebase一起使用的代码,但是当它将用户保存到Firebase(loginGoogle())时,我希望它可以调用下面的setUpUser函数,但不会调用它。

问题

如何在使用Firebase进行身份验证后调用'LoginPage.loginGoogle()'

import { FirebaseAuth, AuthProviders, AuthMethods } from 'angularfire2';

@Component({
  templateUrl: 'login.html'
})
export class LoginPage {
  jobModel: JobModel;
  personModel: PersonModel;

  constructor(private nav: NavController, public auth: FirebaseAuth, public utilityService: UtilityService, public personService: PersonService) {
  }

  setUpUser() {
    alert('setUpUser');
    console.log('LoginPage', window.localStorage.getItem('uid'));
    let promisePersonModel: Promise<PersonModel> = this.personService.getPersonByUid(window.localStorage.getItem('uid'));
    promisePersonModel.then((personModel: PersonModel) => {
      this.personModel = personModel;
      if (!this.personModel) {
        this.personModel = new PersonModel();
        this.personModel.uid = window.localStorage.getItem('uid');
        this.personModel.emailAddress = window.localStorage.getItem('email');
        this.personModel.userName = window.localStorage.getItem('displayName');
        this.personModel.avatar = window.localStorage.getItem('photoURL');
        this.utilityService.login(this.personModel);
        console.log('LoginPage. logged in', this.personModel);
        this.personService.savePerson(this.personModel).then((personModel: PersonModel) => {
          console.log('LoginPage.saved personModel', personModel);
        });
      }
    });
  }

  loginGoogle() {
    this.auth.login({
      provider: AuthProviders.Google,
      method: AuthMethods.Redirect
    }).then((Data) => {
      console.log('LoginPage.loginGoogle()', window.localStorage.getItem('uid'), Data);
      this.setUpUser();
      this.nav.setRoot(SearchJobsPage);
    }).catch((error) => {
      console.log(error);
    })
  }

}

0 个答案:

没有答案