我将 Auth0 与 Angular 应用程序一起使用。我正在使用 Auth0 的管理 API 使用从 Auth0 文档中获得的以下方法更新配置文件元数据:
public getProfile(cb): void {
if (!this._accessToken) {
throw new Error('Access Token must exist to fetch profile');
}
const self = this;
this.auth0.client.userInfo(this._accessToken, (err, profile) => {
if (profile) {
self.userProfile = profile;
}
cb(err, profile);
});
}
public updateProfile(profileChanges : ProfileUpdate): Observable<any> {
console.log(this.userProfile);
var url = 'https://APP.auth0.com/api/v2/users/' + this.userProfile.sub;
var data = {
user_metadata: {
firstName: profileChanges.firstName,
lastName: profileChanges.lastName,
telephone: profileChanges.telephone
}
};
return this.http.patch(url, data);
}
由于我将在 JwtInterceptor 内部触发一些额外的自定义逻辑,因此我编写了一个这样的自定义逻辑,而不是使用来自 Auth0 扩展的 HttpClient:
@Injectable()
export class JwtInterceptor implements HttpInterceptor {
constructor(private authenticationService: AuthService) { }
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
let currentUser = this.authenticationService.currentUserValue;
if (currentUser) {
request = request.clone({
setHeaders: {
Authorization: `Bearer ${currentUser.token}`
}
});
}
return next.handle(request);
}
}
每次我尝试获取或发布个人资料更新时,管理 API 都会出现 401。但是,身份验证和授权机制可以正常工作,我可以正常登录和注销。我试图将令牌切换到 idTokens,并确保我不会错过 Auth0 仪表板内的任何权限,但我什么也没看到。知道它可能是什么吗?