我一直在Ionic 3.1.1
使用Cordova Facebook Plugin
和AngularFire2
来登录Firebase
。它已经工作了好几个月,现在已经停止工作了。 (我不确定这是从Ionic 2
升级到离子3.1.1
的结果
这是我的代码:
login.ts
loginFacebookCordova(): Promise<FirebaseAuthState> {
return new Promise<FirebaseAuthState>((resolve) => {
Facebook.login(['public_profile', 'email']).then(facebookData => {
let cred: firebase.auth.AuthCredential = firebase.auth.FacebookAuthProvider.credential(facebookData.authResponse.accessToken);
firebase.auth().signInWithCredential(cred).then((data: FirebaseAuthState) => {
resolve(data);
});
}, error => {
this.loading.dismiss();
console.error('loginFacebook: ' + error);
this.doAlert('loginFacebook: ' + error.message);
});
});
}
loginFacebookBrowser(): Promise<FirebaseAuthState> {
return new Promise<FirebaseAuthState>((resolve) => {
this.af.auth.login({ provider: AuthProviders.Facebook, method: AuthMethods.Popup }).then((data: FirebaseAuthState) => {
resolve(data);
}).catch((error) => {
this.loading.dismiss();
console.error('loginFacebook', error);
this.doAlert('loginFacebook: ' + error.message);
});
});
}
config.xml中
<plugin name="cordova-plugin-facebook4" spec="~1.7.4">
<variable name="APP_ID" value="XXXXXXXXXXX" />
<variable name="APP_NAME" value="theWhoZoo" />
</plugin>
1。浏览器
如果我尝试使用浏览器(非Cordova)登录,我会在控制台中收到以下警告:
auth.js:不推荐使用101 firebase.auth.AuthCredential.provider。 请改用providerId字段。
然后我收到一封验证邮件,我照常验证,然后尝试登录。它失败并显示以下错误消息:
core.es5.js:1084 ERROR错误:未捕获(在承诺中):错误:正在加载 大块4失败了。错误:加载块4失败。
2。 Android Devise
当我尝试使用Android设备(Cordova插件)登录时,我会收到以下信息:
无效密钥有:密钥xXXXXXXXXXXX =与任何存储不匹配 哈希值。配置您的应用密钥哈希值 https://developers.facebook.com/apps/XXXXXXXXXXX/
当我查看developers.facebook.com的基本设置时,我的APP ID
与APP_ID
中的变量config.xml
匹配。
我正在使用:
"angularfire2": "^2.0.0-beta.8",
"firebase": "^3.7.5",
我查看了文档,但我找不到改变的内容或可能影响此Facebook登录的内容。如果有人可以提供帮助,我会非常感激。
我需要浏览器和Cordova登录的帮助。
由于
答案 0 :(得分:0)
问题发生在developers.facebook.com我的Key Hash
不正确。这解决了Android登录以及浏览器登录的问题(不知道为什么?)。
developers.facebook.com -> Settings -> Basic - Android -> Key Hashes.