Angular Ionic/Firebase(Android)-使用凭据登录无法正常工作

Angular Ionic/Firebase(Android)-使用凭据登录无法正常工作,angular,firebase,authentication,ionic-framework,ionic3,Angular,Firebase,Authentication,Ionic Framework,Ionic3,我用Ionic 3和Firebase数据库制作了一个简单的登录系统。我做这件事经历了地狱般的痛苦,因为在浏览器上工作的东西不一定在android上工作。不管怎么说,我让这个工作,但有几个错误(?)我不知道如何解决 我将从一些代码开始,因此您应该知道我在说什么: 我的facebook登录方法如下所示: async nativeFbLogin(): Promise<void> { this.toast.create({ message: "ZAczynam", duration: 2

我用Ionic 3和Firebase数据库制作了一个简单的登录系统。我做这件事经历了地狱般的痛苦,因为在浏览器上工作的东西不一定在android上工作。不管怎么说,我让这个工作,但有几个错误(?)我不知道如何解决

我将从一些代码开始,因此您应该知道我在说什么:

我的facebook登录方法如下所示:

async nativeFbLogin(): Promise<void> {
  this.toast.create({ message: "ZAczynam", duration: 2000 }).present();
  return this.fb.login(["email", "public_profile"]).then(res => {
    const facebookCredential = firebase.auth.FacebookAuthProvider.credential(
      res.authResponse.accessToken
    );
    return firebase
      .auth()
      .signInWithCredential(facebookCredential)
      .then(res => {
        this.makeToast(JSON.stringify(res));
      });
  });
}
async nativeFbLogin():Promise{
create({消息:“ZAczynam”,持续时间:2000}).present();
返回这个.fb.login([“email”,“public_profile”])。然后(res=>{
const facebookCredential=firebase.auth.FacebookAuthProvider.credential(
res.authResponse.accessToken
);
返回火基
.auth()
.signInWithCredential(facebookCredential)
。然后(res=>{
this.makeToast(JSON.stringify(res));
});
});
}
和谷歌登录:

async nativeGoogleLogin(): Promise<void> {
  try {
    const gplususer = await this.gplus.login({
      webClientId:
        "blahblah",
      offline: true
    });

    return await this.fire.auth
      .signInWithCredential(
        firebase.auth.GoogleAuthProvider.credential(gplususer.idToken)
      )
      .then(r => {
        this.makeToast("zalogowano");
      });
  } catch (err) {
    this.toast.create({ message: "error" + err, duration: 3000 }).present();
  }
}
async nativeGoogleLogin():Promise{
试一试{
const gplususer=等待this.gplus.login({
网络客户端:
“布拉布拉赫”,
离线:对
});
返回等待此。fire.auth
.signInWithCredential(
firebase.auth.GoogleAuthProvider.credential(gplususer.idToken)
)
.然后(r=>{
这是makeToast(“zalogowano”);
});
}捕捉(错误){
create({message:“error”+err,duration:3000}).present();
}
}
正如您所看到的,我使用了
signInWithCredential
方法,因为只有这种方法在andoroid上有效(如许多论坛中提到的)

因此,我面临的是:

  • 我可以使用facebook登录,google+的电子邮件地址是相同的-当使用
    使用弹出窗口登录时,它在浏览器中不起作用,那么为什么它在这种情况下起作用呢?在浏览器中,当我从google+注册,然后尝试使用相同的电子邮件地址使用fb登录时,我会收到类似“有一个帐户使用此电子邮件地址,请选择正确的登录提供商”的错误
  • 我无法选择使用谷歌或facebook登录账户——最让我烦恼的是什么,因为如果用户(像我一样)在同一部手机上有两个或两个以上的fb和谷歌账户怎么办

  • 我可以问一下解决这个问题的建议吗?

    可能是与google和FaceBook中api设置的允许来源有关。也可以检查控制台中的“cordova not available”(cordova not available)或控制台中的某些内容,如果是,则表示浏览器不支持某些插件