Firebase没有注销用户

时间:2018-08-21 15:29:07

标签: html angular typescript firebase firebase-authentication

我使用了Firebase的注销功能注销了一个登录用户。我可以正确登录,但显然无法注销。我已经对此进行了多次测试,但是注销功能根本无法正常工作。任何和所有帮助将不胜感激。以下是我的代码:

export class AuthService {
    private user: Observable<firebase.User>;
    private userDetails: firebase.User = null;

    constructor(private _firebaseAuth: AngularFireAuth, private router: Router) { 
        this.user = _firebaseAuth.authState;
        this.user.subscribe(
            (user) => {
                if (user) {
                    this.userDetails = user;
                    console.log(this.userDetails);
                }
                else {
                    this.userDetails = null;
                }
            }
        );
    }

  signInWithGoogle() {
      return this._firebaseAuth.auth.signInWithRedirect(
          new firebase.auth.GoogleAuthProvider()
      )
  }

  signup(email: string, password: string) {
      this._firebaseAuth.auth.createUserWithEmailAndPassword(email, password)
          .then(value => {
              console.log('Success!', value);
          })
          .catch(err => {
              console.log('Something went wrong:',err.message);
          });    
  }

  login(email: string, password: string) {
      this._firebaseAuth.auth.signInWithEmailAndPassword(email, password)
          .then(value => {
              console.log('Nice, it worked!');
          })
          .catch(err => {
              console.log('Something went wrong:',err.message);
          });
  }

  isLoggedIn() {
      if (this.userDetails == null ) {
          return false;
      } else {
          return true;
      }
  }
  directToNext() {
      if (this.isLoggedIn){
          this.router.navigate(['/or-items/1']);
      }    
  }

  logout() {
      this._firebaseAuth.auth.signOut()
      .then((res) => this.router.navigate(['/']));
    }
  }

然后在HTML中:

<script>
    import {AuthService} from' ./../AuthService';
    
    function  logout() {
        this.authService.logout();
    }
    
    function  isLoggedIn() {
        this.authService.isLoggedIn();
    }
 </script>
 
<span>
 <button mat-raised-button color="basic" (click)="logout()">
          logout
 </button>
</span>

我知道用户未正确注销,因为Firebase控制台指示用户仍在登录。

1 个答案:

答案 0 :(得分:1)

Qari,AFAIK Firebase控制台不指示用户是否已登录。我认为显示的是上次登录日期。

至少在Android Firebase SDK上,当一个人请求注销时,会存在一个回调,可用于指示调用是否成功。可以肯定的是,您可以再次获取当前用户信息,并确认没有当前用户。您可能想尝试类似的方法。