я выполнил аутентификацию на своем сайте, он работает нормально, но я хочу обрабатывать ошибки, для тестирования я вызвал одну для этой цели с этим возвратом из firebase: «Учетная запись уже существует с тем же адресом электронной почты, но другими учетными данными для входа. Войдите, используя провайдера, связанного с этим адресом электронной почты.". Я пытаюсь написать наблюдаемый RXjs для этого со следующим кодом:
private subscribleAuth() {
this.af.auth
.subscribe(
auth => {
this._auth = auth && auth.auth ? auth.auth : null;
if (this._auth) {
this.loginState = 'logged';
} else {
this.loginState = 'login';
}
},
err => {
console.log('error'),
this.loginState = 'error';
},
() => { console.log('done.') }
);
}
Моя консоль никогда не показывает «ошибку» или «готово», поэтому все, что я помещаю в код ошибки, не работает.
примечание: я знаю, что вызывает этот возврат firebase, я просто хочу знать, как с ним обращаться и почему написанный мной код не работает должным образом, когда никаких ошибок не возвращается, сайт работает, как ожидалось, с тем же наблюдаемым.
Я использую angularfire2: ^ 2.0.0-beta.5 с финальной версией Angular 2.0.0.
РЕДАКТИРОВАТЬ 2: отмечено как проблема и, возможно, это действительно ошибка, я буду обновлять этот пост. Обходной путь на данный момент использует этот код, написанный yashmurty на github:
import { AngularFire, AuthProviders } from 'angularfire2';
import { AuthBackend } from 'angularfire2/auth/auth_backend';
export class SocialmenuComponent {
constructor(public af: AngularFire, private _authBackend: AuthBackend) {
// this.af.auth.subscribe(
this._authBackend.getRedirectResult().subscribe(
(auth) => {
if(auth) {
console.log(auth);
} else {
console.log('User Not Logged In');
}
},
(err) => {
if(err) {
console.log('Error in auth.subscribe : ');
console.log(err);
} else {
console.log('No Error detected in auth.subscribe');
}
},
() => { console.log('done.') }
);
}
}
this.af.auth.subscribe(auth => console.log(auth));
? Но это не то, что вы делаете. Посмотрите в самый низ: github. com/angular/angularfire2/blob/master/docs/ Они привязывают.then()
и.catch()
к возвращенному Promise отauth().signInWithCredential(provider)
. Вот как вы можете ловить ошибки. - person martin   schedule 27.09.2016