import { Router } from '@angular/router'; import * as firebase from 'firebase'; import { Injectable } from '@angular/core'; @Injectable() export class O2AuthService { token: string; user: string; constructor(private router: Router) {} signupUser(email: string, password: string) { firebase.auth().createUserWithEmailAndPassword(email, password) .catch( error => console.log(error) ); } loginEmail(email: string, password: string) { firebase.auth().signInWithEmailAndPassword(email, password) .then( response => { this.router.navigate(['/']); firebase.auth().currentUser.getIdToken() .then( (token: string) => this.token = token ); } ) .catch( error => console.log(error) ); } loginFacebook() { const provider = new firebase.auth.FacebookAuthProvider(); this.loginByAuthProvider(provider); } loginGoogle() { const provider = new firebase.auth.GoogleAuthProvider(); this.loginByAuthProvider(provider); } loginGithub() { const provider = new firebase.auth.GithubAuthProvider(); this.loginByAuthProvider(provider); } loginTwitter() { const provider = new firebase.auth.TwitterAuthProvider(); this.loginByAuthProvider(provider); } loginByAuthProvider(provider: any ) { firebase.auth().signInWithPopup(provider) .then((result) => { this.token = result.credential.accessToken; this.user = result.user; console.log(this.token); console.log(this.user); }) .catch((error) => { console.log(error); }); } logout() { firebase.auth().signOut(); this.token = null; } getToken() { firebase.auth().currentUser.getIdToken() .then( (token: string) => this.token = token ); return this.token; } isAuthenticated() { return this.token != null; } }