2016-07-13 85 views
2

我是Firebase的新手,但我想在當前的angular2項目中使用它。我使用Angularfire2卡住了電子郵件密碼驗證。據我瞭解API,你必須調用firebase.auth.Auth對象的signInWithEmailAndPassword(email, password)方法。不過,我不知道如何獲得這個'Auth'的實例。 我確實發現一個example進行身份驗證。但該示例不使用電子郵件/密碼認證。我找不到任何關於如何以正確方式調用上述方法的示例。身份驗證電子郵件/密碼與Firebase sdk3和Angularfire2

我找到了一些JS實例。在那裏,「Auth」對象被以某種方式注入。這似乎不像我嘗試過的那樣工作。這是我走到這一步(不工作):

main.ts

bootstrap(AppComponent, [..., FIREBASE_PROVIDERS, 
defaultFirebase({ 
    apiKey: "<>", 
    authDomain: "<>", 
    databaseURL: "<>", 
    storageBucket: "<>", 
}),firebaseAuthConfig({ 
    provider: AuthProviders.Password, 
    method: AuthMethods.Password 
}), AuthService]) 
.catch(err => console.error(err)); 

auth.service.ts:

@Injectable() 
export class AuthService{ 

private _authState: FirebaseAuthState = null; 

constructor(private _fireAuth:FirebaseAuth, private _af:AngularFire, private _auth:Auth){ 
    _fireAuth.subscribe((state:FirebaseAuthState) =>{ 
     this._authState = state; 
    }); 
} 

get authenticated():boolean{ 
    return this._authState !== null; 
} 

get id(): string { 
    return this.authenticated ? this._authState.uid : ''; 
} 

signIn(email:string, password:string):Promise<User>{ 
    return this._auth.signInWithEmailAndPassword(email, password); 
} 
... 

我的應用程序甚至不啓動 - >錯誤Cannot resolve all parameters for 'AuthService'(FirebaseAuth, AngularFire, ?)。 如果我嘗試使用this._af.auth().signInWithEmailAndPassword(email, password) Typescript編譯器抱怨:error TS2349: Cannot invoke an expression whose type lacks a call signature.忽略編譯器錯誤並運行程序導致錯誤TypeError: this._af.auth is not a function錯誤。

謝謝你的幫助!

#AskFirebase

回答

2

嗯,我仍然沒有找到如何使用signInWithEmailAndPassword方法。不過,我設法使用電子郵件/密碼登錄。您可以使用

signIn(email:string, password:string){ 
    _fireAuth.login({ 
    email: email, 
    password: password 
    }); 
} 

其中_fireAuth是FirebaseAuth類型。

相關問題