簡體   English   中英

如何在 AngularFire2 中獲取當前用戶的訪問令牌?

[英]How do I get the current user's access token in AngularFire2?

在 AngularFire 中,您可以為經過身份驗證的用戶訪問提供者(例如 Google)的 accessToken。

似乎沒有辦法使用 AngularFire2 訪問它?

在初次登錄時,像這樣說:

this.af.auth.subscribe(user=> {
  if (user) {
    console.log(user.google);
  }
});

它將注銷 idToken、accessToken、提供者,但是(在頁面刷新時)隨后將注銷標准詳細信息(uid、displayName 等...)並且 accessToken 不是可訪問的屬性?

有沒有辦法訪問當前用戶的accessToken?

只有在用戶首次登錄時才能訪問訪問令牌。從針對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; }); 

所以它確實不適用於頁面刷新。 如果您希望它保持可用,您需要自己保留它。

這對我有用:

this.af.auth.getAuth().auth.getToken(false);//true if you want to force token refresh

您可以將其放入服務中,然后您可以獲得如下標記:

this.authService.getToken().then(
  (token) => console.debug(`******** Token: ${token}`));

getToken現已棄用。 您應該使用getIdToken

this.af.auth.currentUser.getIdToken(true)
  .then((token) => localStorage.setItem('tokenId', token));

使用AngularFire2,您可以獲得如下標記:

this.af.auth.getToken() // returns a firebase.Promise<any>

如果您想獲得ES6 Promise,請使用

Promise.resolve()
  .then(() => this.af.auth.getToken() as Promise<string>)

 googleSignIn() { return this.af_auth.auth.signInWithPopup(new firebase.auth.GoogleAuthProvider()) .then(res => { // retrieve access token const AccessToken = res.credential['accessToken']; console.log("Access token: ", AccessToken); }) .catch(error => { console.log(error.message); }); 

從 angularfire2 中的存儲中獲取身份驗證令牌

JSON.parse(JSON.stringify(this.afAuth.auth.currentUser)).stsTokenManager.accessToken

如本次討論所示: https : //github.com/angular/angularfire2/issues/725

使用AngularFire2 :(例如:使用電子郵件和密碼組合注冊用戶。)

import { AngularFireAuth } from 'angularfire2/auth';
model : any = {} ;
private afAuth : AngularFireAuth,

regWithEP () {
    this.afAuth.auth.createUserWithEmailAndPassword(this.model.email, this.model.password).then((user) => {
    /* IMPORTANT !! */
    /* EXPLICIT CHECK IF USER IS RETURNED FROM FIREBASE SERVICE !! */

          if (user) {
            console.log(user);
            /* Here user is available and is the same as auth.currentUser */

            this.afAuth.auth.currentUser.getToken().then((token) => {

            //token is available here
            //set token to currentUser, signIn , re-direct etc.
            });
        }
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM