Auth0 / React getProfile不返回用户信息

时间:2018-03-27 18:51:32

标签: reactjs auth0

我正在尝试使用本教程检索用户的个人资料信息: 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"}

2 个答案:

答案 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)
         }
       });
     }
   }