Auth0用户信息方法返回仅包含子属性

时间:2017-05-20 21:37:36

标签: angular authentication auth0

我正在为我的角应用程序构建身份验证,并且当有人登录时我试图从auth0获取userinfo。我使用auth0文档作为指导,我得到'用户'对象,但它只有子属性没有名称,电子邮件等。

Object {sub: "auth0|5**********7"}

我尝试使用facebook,linkedin,google登录并在没有社交媒体的情况下注册,但结果只是'auth0 |'部分变化。这是我的auth.service.ts:

auth0 = new auth0.WebAuth({
  clientID: 'myClientID',
  domain: 'myDomain.auth0.com',
  responseType: 'token id_token',
  audience: 'https://myDomain.auth0.com/userinfo',
  redirectUri: 'http://localhost:4200/',
  scope: 'openid'
})

handleAuthentication(): void {
  this.auth0.parseHash((err, authResult) => {
    if (authResult && authResult.accessToken && authResult.idToken) {
      window.location.hash = '';
      this.setSession(authResult);
      this.router.navigate(['/dersler']);

      // This is for getting user info after authentication (taken from the auth0 docs but revised)
      this.auth0.client.userInfo(authResult.accessToken, function(err, user) {
      // This method will make a request to the /userinfo endpoint 
      // and return the user object, which contains the user's information, 
        if (err) {
          return console.log(err);
        }
        console.log(user);
        return;
      });
      // method to get user info ends here

    } else if (err) {
      this.router.navigate(['/']);
      console.log(err);
    }
  });
}

我尝试在auth0文档中使用http方法获取userinfo,但它仅使用'sub'属性返回相同的用户对象。为什么它不返回其他用户信息?

编辑(已解决): 我将auth0的'scope'属性从'openid'更改为'openid profile',现在它返回名称和所有其他信息成功的用户对象。

1 个答案:

答案 0 :(得分:6)

问题出在您的scope参数中,您可以将其更改为scope: 'openid profile email phone'。然后注销,登录并完成。

更多信息here