如何在AngularFire2中获取当前用户的访问令牌?

Int*_*oid 8 javascript firebase firebase-authentication angularfire2

在AngularFire中,您可以为经过身份验证的用户访问提供程序(例如Google)accessToken.

似乎没有办法通过AngularFire2访问它?

初次登录时请说如下:

this.af.auth.subscribe(user=> {
  if (user) {
    console.log(user.google);
  }
});
Run Code Online (Sandbox Code Playgroud)

它将注销idToken,accessToken,提供者,但是(在页面刷新时)随后将注销标准细节(uid,displayName等....)而accessToken不是可访问的属性?

有没有办法访问当前用户accessToken?

Wil*_*ill 5

getToken现在已弃用。你应该使用getIdToken

this.af.auth.currentUser.getIdToken(true)
  .then((token) => localStorage.setItem('tokenId', token));
Run Code Online (Sandbox Code Playgroud)


Fra*_*len 1

仅当用户首次登录时才能访问访问令牌。来自适用于 Web 开发人员的 Firebase 迁移指南

借助 Firebase.com 身份验证 API,您可以轻松使用提供商的访问令牌来调用提供商的 API 并获取其他信息。此访问令牌仍然可用,但仅在登录操作完成后立即可用。

var auth = firebase.auth();

var provider = new firebase.auth.GoogleAuthProvider();
auth.signInWithPopup(provider).then(function(result) {
  var accessToken = result.credential.accessToken;
});
Run Code Online (Sandbox Code Playgroud)

所以它确实在页面刷新时不可用。如果您希望它保持可用,您需要自己保留它。

  • 不,遗憾的是这不适用于 AngularFire2 库。 (3认同)