我正在尝试使用本教程检索用户的个人资料信息: https://auth0.com/docs/quickstart/spa/react/02-user-profile
我的范围如下:
auth0 = new auth0.WebAuth({
// ...
scope: 'openid profile'
});
以下是Auth
文件中的两个函数。
getAccessToken() {
const accessToken = localStorage.getItem('access_token');
if (!accessToken) {
throw new Error('No Access Token Found');
}
return accessToken;
}
getProfile() {
let accessToken = this.getAccessToken();
return new Promise((resolve, reject) => {
this.auth0.client.userInfo(accessToken, (err, profile) => {
console.log(profile);
if (profile) {
resolve(profile);
} else if (err) {
reject(err);
}
});
});
}
当我控制台登录时,我会得到这个而不是用户的信息。
{sub: "auth0|5aba531bbf06807d56cdb6c5"}
答案 0 :(得分:1)
似乎只是返回范围openid的字段。你在哪里指定了范围?
答案 1 :(得分:0)
这对我有用:
更改auth0对象的范围以包括配置文件:
scope: 'openid profile email'
设置一个空的用户个人资料对象
userProfile = {}
然后将配置文件设置为来自auth0的响应。
getAccessToken() {
if (localStorage.getItem('access_token')) {
const accessToken = localStorage.getItem('access_token')
return accessToken
}
else {
console.log("No accessToken")
return null
}
}
getProfile() {
let accessToken = this.getAccessToken();
if(accessToken) {
this.auth0.client.userInfo(accessToken, (err, profile) => {
if (profile) {
this.userProfile = { profile };
console.log(this.userProfile)
}
});
}
}