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

时间:2017-08-28 07:18:18

标签: angular typescript firebase firebase-authentication angularfire

我正在尝试弄清楚如何在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属性。我怎样才能获得该财产?

这是否是为用户获取uid的正确方法?会...

this.afAuth.auth.currentUser.getIdToken()

......会更好吗?如果这更好,我也看不出如何让uid脱离这个。建议?

1 个答案:

答案 0 :(得分:0)

您可以从idToken Observable

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

请注意,这是一个可观察的,这意味着您可以使用此链作为mergeMapmap等基础来创建链。