我正在使用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);
})
}
}