Как получить от Okta информацию о пользователе, кроме имени, фамилии и электронной почты?

Я хотел бы получить другую информацию от Okta, потому что с this.props.auth.getUser() я буду получать только электронную почту, имя и фамилию о пользователе. Но есть много данных об Okta, например, штат, город, улица, почтовый индекс и так далее.

Я создаю веб-приложение с ReactJS и Node express, а вход в систему управляется Okta (https://developer.okta.com/), затем я хотел бы сохранить информацию Okta о пользователях в базе данных.

async checkAuthentication() {
  const authenticated = await this.props.auth.isAuthenticated();

  if (authenticated !== this.state.authenticated) {
    const user = await this.props.auth.getUser();

    console.info(this.props.auth);
    this.setState({
      authenticated,
      user
    });
    this.getUsers();
  }
}

async getUsers() {
  let params = "";
  let url = "";

  if (this.state.user != null) {
    params += "EMAIL = " + this.state.user.email;
  }

  url = params == null ? "/user" : "/user?";
  url += params;
  this.state.users = await this.fetch('get', url);

  if (this.state.users && Object.keys(this.state.users).length == 0) {
    this.saveUser();
  }
}

async saveUser() {
  var user = {
    EMAIL: this.state.user.email,
    NAME: this.state.user.given_name,
    SURNAME: this.state.user.family_name,
    //ORGANIZATION: "this.state.user.organization",
    //PHONE = "this.state.user.primaryPhone",
    //STATE = "this.state.user.state",
    //STREET_ADDRESS = "this.state.user.streetAddress",
    //ZIP_CODE = "this.state.user.zipCode",
  };

  await this.fetch('post', '/user', user);
}

Здесь я хотел бы сохранить другие данные из Okta.

//ORGANIZATION: "this.state.user.organization",
//PHONE = "this.state.user.primaryPhone",
//STATE = "this.state.user.state",
//STREET_ADDRESS = "this.state.user.streetAddress",
//ZIP_CODE = "this.state.user.zipCode",
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
1 558
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам нужно указать, что вы хотите в качестве области действия. Okta имеет следующие области действия по умолчанию: offline_access, телефон, адрес, электронная почта, профиль, openid. В конфигурации вы можете использовать эти документы https://developer.okta.com/authentication-guide/implementing-authentication/.

Используя функцию getUser () из okta, у меня есть только эта информация: email: "[email protected]" email_verified: true family_name: "xxxxxx" given_name: "Fabio" locale: "IT" name: "Fabio xxxxx" preferred_username: "[email protected]" sub: "xxxxxxxxx" updated_at: 1547719125 zoneinfo: ""

Fabio 18.01.2019 08:44
Ответ принят как подходящий

auth.getUser () возвращает сведения, доступные в конечной точке / userinfo на сервере авторизации, через который пользователь прошел аутентификацию и авторизацию, как описано здесь.

Если вы хотите опубликовать и другие сведения об этой / конечной точке, выполните следующие действия:

  • перейдите из своего клиента Okta в Админ >> API >> Сервер авторизации >> свой сервер авторизации.
  • на вкладке «Заявки» добавьте новые заявки со значениями профиля пользователя и в разделе «Включить в тип токена» выберите «Идентификационный токен» и «Запрос Userinfo / id_token».

Другие вопросы по теме