【发布时间】:2017-09-10 19:07:07
【问题描述】:
我正在开发一个使用 Fireface Login 和 Facebook 的 Ionic 应用程序。为此,我在这里关注了文档:https://github.com/angular/angularfire2/blob/master/docs/Auth-with-Ionic2.md
几乎在文档的末尾,您可以看到进行 FB 登录的一段代码(如果可用,请使用本机 FB 应用程序):
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().signInWithCredential(facebookCredential) 创建的 Promise。
你有什么提示/想法吗?
提前非常感谢!
【问题讨论】:
-
没有使用过标志性的库,所以不知道你到底在引用什么。你能更详细地解释一下“。实际上方法应该返回”
-
signInWithFacebook 的返回类型是 firebase.Promise
。但是 Facebook.login() 的返回类型是 Promise - 这是不兼容的。但是 Facebook.login() 的已解决 Promise 的结果将适合 signInWithFacebook 的方法定义。我尝试做的是返回已解决的 Promise(由 Facebook.login() 创建)的结果,而不是 Promise 本身。 -
return firebase.auth.FacebookAuthProvider.credential(res.authResponse.accessToken).then((facebookCredential)=>firebase.auth().signInWithCredential(facebookCredential));呢? -
我如何获得 res.authResponse.accessToken?这是我在您的建议中找不到的“外部”承诺(通过 Facebook-login())结果的一部分
标签: typescript ionic-framework promise