auth logout上的权限错误:firebase / ionic / angularfire2

时间:2017-10-09 20:46:19

标签: firebase firebase-authentication ionic3 angularfire2

我有一个使用angularfire2和firebase的ionic3应用程序。我使用firbase auth登录我的应用程序,并从firebase中检索关于" currentChallenges"的对象。当我使用注销功能时,Firebase会抛出错误。

错误讯息:

  

permission_denied at / currentChallenge:客户没有权限   访问所需的数据。

我在auth.service.ts中使用以下函数进行注销:



logout() {
    this.isLoggedIn = false;
    this.firebaseAuth
        .auth
        .signOut().then(() => {
            this.appCtrl.getRootNav().popToRoot(); //root is login page
        });
}




我不确定导致错误的确切位置/原因。在我的challenge.service.ts中,我创建了初始的可观察对象:



private dbCurrentChallengesObservable: FirebaseObjectObservable <any>;
 
constructor(db: AngularFireDatabase) { 
  this.dbCurrentChallengesObservable = db.object('/currentChallenge');  
}

public getCurrentChallenges(){
  return this.dbCurrentChallengesObservable;
}
&#13;
&#13;
&#13;

然后,我在我的模型(challenge.ts)中使用这个对象:

&#13;
&#13;
ionViewCanEnter(): boolean{
    return this.authService.isAuthenticated();
}
   
ionViewDidLoad() {
    this.currentChallenge = this.challengesService.getCurrentChallenges();
    this.currentChallenge.subscribe(data => {
        if(data.challenge1completed > 0) this.challenge1Completed = true;
        if(data.challenge2completed > 0) this.challenge2Completed = true;
    });
}
&#13;
&#13;
&#13;

起初我认为它与subscribe有关,我在challenge.ts中的on-ion-leave函数中添加了subscribe()。unsubscribe(),但这并没有阻止错误。但是一些东西仍然必须要听firebase,这必须在注销之前或甚至在注销之前停止。我只是不知道在哪里/在哪里/如何。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

private afDatabase: AngularFireDatabase,//blabla       
this.afDatabase.database.goOffline();//To solve the permission denied 문제.

在signout();

之前添加上述语句

我也花了很多时间来解决这个问题而没有发现任何一条线索。 希望这有帮助