Ionic中的Facebook OAuth登录错误

时间:2017-07-24 15:10:21

标签: angular cordova firebase ionic2 firebase-authentication

我正在使用Facebook Auth作为我的Ionic应用程序,并且正在使用Firebase模块进行身份验证。我相信我已经正确设置了firebase模块,但是在我尝试登录时遇到了一个错误。我将指出登录方法在Web浏览器上进行测试时已经工作过一次,从此产生了以下错误。我已尝试在Android模拟器上进行测试,因为混合结果(错误构建)。这是我的代码。



import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import  firebase  from 'firebase';
import { Facebook } from '@ionic-native/facebook';
//import { AngularFireModule } from 'angularfire2';
import { HomePage } from '../home/home';
/**
 * Generated class for the LoginPage page.
 *
 * See http://ionicframework.com/docs/components/#navigation for more info
 * on Ionic pages and navigation.
 */
@IonicPage()
@Component({
  selector: 'page-login',
  templateUrl: 'login.html',
})
export class LoginPage {

  homePage = HomePage;

  constructor(public navCtrl: NavController, public navParams: NavParams, public facebook: Facebook) {
  }


  login2(){
    //this.navCtrl.setRoot(this.homePage);
    let provider = new firebase.auth.FacebookAuthProvider();
    firebase.auth().signInWithRedirect(provider).then(() => {
      firebase.auth().getRedirectResult().then((result) => {
        console.log(JSON.stringify(result))
        this.navCtrl.push(this.homePage)

      })

    }).catch(function(error){
      console.log(JSON.stringify(error));
    });


  }


}




模板基本上只是一个按钮,其中(点击)=' login2()'。 当我单击此按钮时,程序崩溃并重新加载并显示错误:

未捕获的TypeError:无法读取属性'数据集'为null     在HTMLDocument.r(bundle.js:6112) r @ bundle.js:6112


只有在我点击此按钮时才会发生这种情况,因此我知道它与我使用firebase的方式有关。我想这可能是这些firebase方法需要cordova(因此除非我本地建造,如果我没有弄错的话)不能工作,或者我需要一些额外的设置(比如确保firebase& #39;数据库'已经分配给app.module中的监听器或其他东西。我的另一个理论是,由于它曾经工作过一次,它仍然保持已经登录并因此而遇到一些奇怪的错误。提前谢谢。

2 个答案:

答案 0 :(得分:0)

你不能在Cordova环境中使用signInWithRedirect(),你有两个选择,你可以:

  1. 使用原生Facebook插件,然后将凭据传递给Firebase,如下所示:https://javebratt.com/ionic-2-facebook-login/

  2. 您需要安装一堆Cordova插件才能使重定向工作,如下所示:https://firebase.google.com/docs/auth/web/cordova

  3. 希望有所帮助:)

答案 1 :(得分:0)

这对我来说很好,也许它会帮助你:

facebookSignIn(){
    let provider = new firebase.auth.FacebookAuthProvider();
    firebase.auth().signInWithRedirect(provider);
    firebase.auth().getRedirectResult().then((user) => {
      console.log("Successful facebook sign-in!");
      this.navCtrl.setRoot('HomePage');
    }).catch((error) => {
      alert(error.message);
    });
  }