Auth0 getProfile不返回user_id

时间:2017-09-20 13:07:05

标签: node.js auth0

我正在为nodejs项目调用node-auth0 sdk。

auth0.getProfile(accessToken, function (err, userInfo) {
    if (err) {
        res.status(400).json(err)
    }
    console.log(userInfo);
});

返回的userInfo不包含user_id enter image description here

如果我想通过访问令牌获取user_id,我该怎么办?

1 个答案:

答案 0 :(得分:1)

在屏幕截图中,sub声明(主题)是user_id。请确认您的预期user_id是否应为facebook|1

您需要使用

解析String JSON对象
const userId = JSON.parse(userInfo)['sub'];

以下是工作样本:

var AuthenticationClient = require('auth0').AuthenticationClient;

var auth0 = new AuthenticationClient({
  domain: '{TENANT}.auth0.com',
  clientId: '{client id}'
});

const accessToken = '{access token}';

auth0.getProfile(accessToken, function (err, userInfo) {
  const userId = JSON.parse(userInfo)['sub'];
  console.log(userId);
});

仅限FYI - 因为您正在处理String对象,所以当您调用sub时,您获得了对已弃用的String sub prototype function的引用,可以理解这种混淆。如果您不确定Object的类型,检查的好方法是console.log(typeof userInfo);