我正在开发一款使用Fireface登录Facebook的Ionic应用程序。为此我遵循了这里的文档:https://github.com/angular/angularfire2/blob/master/docs/Auth-with-Ionic2.md
几乎在文档的末尾,您可以看到执行FB登录的代码段(如果可用,使用Native FB App):
signInWithFacebook(): firebase.Promise<FirebaseAuthState> {
if (this.platform.is('cordova')) {
return Facebook.login(['email', 'public_profile']).then(res => {
const facebookCredential = firebase.auth.FacebookAuthProvider.credential(res.authResponse.accessToken);
return firebase.auth().signInWithCredential(facebookCredential);
});
} else {
...
}
}
这种搞砸了signInWithFacebook方法的返回类型。实际上该方法应该返回由Facebook.login(...)触发的Promise的结果 - 但它确实返回了具有不同数据类型的FacebookLogin-Promise本身。 我有点困惑,我怎么能重新建模这些行来正确返回firebase.auth()创建的Promise。signInWithCredential(facebookCredential)。
你有任何提示/想法吗?
提前多多感谢!
答案 0 :(得分:0)
好的,所以这是一个解决方案(或解决方法 - 无论你想要什么称呼它)。
我改变了什么:
以下是代码:
signInWithFacebook(success: (FirebaseAuthState) => void): void {
if (this.platform.is('cordova')) {
Facebook.login(['email', 'public_profile']).then(res =>
{
const facebookCredential = firebase.auth.FacebookAuthProvider.credential(res.authResponse.accessToken);
firebase.auth().signInWithCredential(facebookCredential).then( fbas => success(fbas));
}
);
}
else {
this.auth$.login({
provider: AuthProviders.Facebook,
method: AuthMethods.Popup
}).then(res => success(res));
}
}
这就是调用方法的方法:
this._auth.signInWithFacebook2(res => {...});