如何从 Okta 获取除姓名和电子邮件之外的用户信息?
How to get user info from Okta, other than name, surname and email?
我想从 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.log(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",
您需要指定您想要的范围。 Okta 具有以下默认范围 offline_access、phone、地址、电子邮件、配置文件、openid.In 配置,您可以使用这些文档 https://developer.okta.com/authentication-guide/implementing-authentication/
auth.getUser() returns 用户通过其获得身份验证和授权的授权服务器上的 /userinfo 端点下可用的详细信息,如此处所述。
如果您还想在此 /endpoint 上发布其他详细信息,请执行以下操作:
- 从您的 Okta 租户导航到管理员 >> API >> 授权服务器 >> 您的授权服务器
- 在“声明”选项卡下,添加具有用户配置文件值的新声明,并在 "Include in token type"、select "ID Token" 和 "Userinfo / id_token request"
下
我想从 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.log(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",
您需要指定您想要的范围。 Okta 具有以下默认范围 offline_access、phone、地址、电子邮件、配置文件、openid.In 配置,您可以使用这些文档 https://developer.okta.com/authentication-guide/implementing-authentication/
auth.getUser() returns 用户通过其获得身份验证和授权的授权服务器上的 /userinfo 端点下可用的详细信息,如此处所述。
如果您还想在此 /endpoint 上发布其他详细信息,请执行以下操作:
- 从您的 Okta 租户导航到管理员 >> API >> 授权服务器 >> 您的授权服务器
- 在“声明”选项卡下,添加具有用户配置文件值的新声明,并在 "Include in token type"、select "ID Token" 和 "Userinfo / id_token request" 下