代码之家  ›  专栏  ›  技术社区  ›  flipcode

AngularFire2在Typescript中获取经过身份验证的用户ID

  •  5
  • flipcode  · 技术社区  · 8 年前

    我正在尝试解决如何在TypeScipt中获取Firebase认证用户的uid:

    <div> {{ (user | async)?.uid }} </div>
    

    我有以下TS代码:

    import { AngularFireAuth } from 'angularfire2/auth';
    import * as firebase from 'firebase/app'
    
    @Component({
      selector: 'app-user-portal',
      templateUrl: './user-portal.component.html',
      styleUrls: ['./user-portal.component.css']
    })
    export class UserPortalComponent implements OnInit {
      user: Observable<firebase.User>;
    
      constructor(
                  public afAuth: AngularFireAuth
      ) {
        this.user = afAuth.authState;
      }
    
      ngOnInit() {
    
      }
    }
    

    我读到的所有内容都表明我需要访问的id属性。。。

    this.afAuth.auth.currentUser.uid
    

    ... 但这似乎没有暴露出来。如果我把它改成。。。

    this.afAuth.auth.currentUser.toJSON()
    

    这是为用户获取uid的正确方法吗?将

    this.afAuth.auth.currentUser.getIdToken()
    

    ... 变得更好?如果这样更好,我也看不出如何从中提取uid。建议?

    1 回复  |  直到 8 年前
        1
  •  3
  •   Supamiu    8 年前

    您可以从以下位置获取uid idToken Observable

    this.afAuth.idToken.subscribe(user => {
                this.user = user;
                this.lists = this.af.list(`/lists/${user.uid}`);
            });
    

    请记住,这是一个可观察的,这意味着您可以使用它作为基础创建一个链 mergeMap , map

    推荐文章