![](/img/trans.png)
[英]Firebase angularfire2 - How to return data from the current user only?
[英]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.