如何在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 provider但是(在页面刷新时)随后将注销标准详细信息(uid, displayName等....)accessstoken不是一个可访问的属性?
是否有访问当前用户accessToken的方法?
getToken
现在已弃用。您应该使用getIdToken
:
this.af.auth.currentUser.getIdToken(true)
.then((token) => localStorage.setItem('tokenId', token));
访问令牌仅在用户首次登录时可访问。来自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; });
所以它在页面刷新时确实不可用。如果您希望它保持可用,您将需要自己持久化它。
使用AngularFire2,你可以像这样获得令牌:
this.af.auth.getToken() // returns a firebase.Promise<any>
如果你想获得ES6的Promise,只需使用
Promise.resolve()
.then(() => this.af.auth.getToken() as Promise<string>)
这个适合我:
this.af.auth.getAuth().auth.getToken(false);//true if you want to force token refresh
你可以把它放到一个Service中,然后你可以像这样获得令牌:
this.authService.getToken().then(
(token) => console.debug(`******** Token: ${token}`));
我在访问访问令牌(res.stsTokenManager.accessToken)时遇到困难,因为它总是返回未定义。为了解决这个问题,我实现了以下解决方案:
this.afAuth.currentUser.then((res: any) => {
console.log(JSON.parse(JSON.stringify(res))?.stsTokenManager.accessToken);
});
我使用了afAuth。currentUser方法,该方法返回一个解析到当前用户对象的承诺。然后,我应用Then函数来处理解析后的值。在then回调中,我使用JSON.stringify(res)将用户对象转换为JSON字符串。之后,我使用JSON.parse将JSON字符串解析回对象。最后,为了安全地访问访问令牌属性,我使用了可选的链接操作符(?.),后面跟着stsTokenManager.accessToken.
通过实现这个代码片段,我能够成功地记录当前用户的stsTokenManager对象的访问令牌的值。这种方法帮助我避免了在访问令牌或任何中间属性未定义的情况下出现的任何潜在错误。
从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.
});
}
});
}
- 使用Javascript获取Twitter访问令牌
- FB.login访问令牌facebook javascript SDK
- Phonegap:获取访问令牌时出现LinkedIn登录错误
- 打开图形:Java脚本:必须使用活动访问令牌来查询有关当前用户的信息
- 必须使用活动访问令牌来查询有关具有打开图的当前用户的信息
- 在JS web应用程序中,如何确保具有访问令牌的恶意用户无法刷新它
- 如何获取用户访问令牌,与图形 API 资源管理器中使用的令牌相同
- 仅使用访问令牌在节点中获取Google+用户配置文件
- 使用具有应用程序访问令牌的图形 API 搜索用户
- FB.logout() - 无访问令牌 - “以其他用户身份登录”
- 如果用户喜欢Facebook页面,则无需请求访问令牌
- 必须使用活动访问令牌来查询有关当前用户的信息
- 如何在Google OAuth2中获得用户登录并同意后的访问令牌和刷新令牌
- Facebook图形API -如何在前端使用,无需用户登录和获取访问令牌
- 如何在AngularFire2中获得当前用户的访问令牌?
- 用户访问令牌格式错误
- LinkedIn访问令牌用于验证用户并使用JSAPI发送消息
- 必须使用活动的访问令牌来查询当前用户的信息|访问令牌似乎是有效的
- 如何使用访问令牌机制以角度.js重定向用户
- 环回抛出未定义的访问令牌,即使用户已登录