Итак, я новичок в AngularFire2
и Angular2
в целом, я изучаю метод аутентификации, который предоставляет AngularFire2
.
До сих пор я успешно реализовал вход в систему с помощью Facebook
, мой код в настоящее время находится в файле service
.
Таким образом, код прост (может показаться вам отвратительным), я вхожу через Facebook
, получаю токен доступа пользователей и их facebookId, делаю вызов на график Facebook и получаю имя, фамилию, пол, адрес электронной почты и т. д., а затем сохраняю эти данные в Firebase
this мой код для выполнения вышеуказанного:
loginWithFacebook(): FirebaseListObservable<string> {
return FirebaseListObservable.create(obs => {
this.af.auth.login({
provider: AuthProviders.Facebook,
method: AuthMethods.Popup,
scope: ['public_profile']
}).then((authState: any) => {
let userRef = this.af.database.object('/users/' + authState.uid); // get user profile
userRef.subscribe(user => {
let url = `https://graph.facebook.com/v2.8/${user.facebookId}?fields=first_name,last_name,gender,email&access_token=${user.accessToken}`;
this.http.get(url).subscribe(response => {
let result = response.json()
userRef.update({
first_name: result.first_name,
last_name: result.last_name,
gender: result.gender,
email_address: result.email,
facebookId: user.facebookId
})
})
})
obs.next(userRef);
}).catch(err => {
obs.throw(err)
});
});
Я вызываю это из своего login.component
, как показано:
loginFacebook() {
this.loginSubscription = this.service.loginWithFacebook().subscribe(data => {
console.log('after finish', data);
});
}
Проблема, с которой я столкнулся, заключается в том, что я хочу зафиксировать, если вход в систему с помощью facebook завершается неудачей или проходит. Я пытался заполнить Observable
в методе службы, однако, когда я console.log 'после завершения', данные я вижу следующее:
Может ли кто-нибудь пролить свет на то, как я могу вернуть true/false из этого метода? Если кто-то может увидеть более чистый способ сделать это, я был бы очень признателен.