Nhảy đến nội dung

Cập nhật thuộc tính người dùng, ví dụ như số điện thoại của người dùng

Trong ví dụ này, chúng tôi sẽ trình bày cách cập nhật các thuộc tính của người dùng, chẳng hạn như số điện thoại của họ, bằng cách sử dụng API OneEntry.

✅ Mục đích của kịch bản:

  • Người dùng xác thực bằng cách đăng nhập và mật khẩu
  • Nhập số điện thoại mới vào trường điện thoại
  • Lưu dữ liệu người dùng trên Nền tảng OneEntry

✅ Những gì bạn cần:

  • Một PROJECT_URL và APP_TOKEN hợp lệ để xác thực với API OneEntry.
  • Mẫu đăng ký với dấu hiệu "reg"
  • Các trường mẫu (thuộc tính) với các dấu hiệu "email_reg", "password_reg", "name_reg", "phone_reg"
  • Email/số điện thoại hợp lệ để nhận mã kích hoạt

📌 Quan trọng:

  • Những ví dụ này không bao gồm xử lý lỗi.
  • Bạn có thể quản lý lỗi bằng cách sử dụng khối try-catch hoặc bằng cách sử dụng cấu trúc như await Promise.catch((error) => error).
  • Đảm bảo rằng formIdentifier được sử dụng trong phương thức updateUser() khớp với cái đã được cấu hình trong dự án OneEntry của bạn.

Kịch bản

1. Nhập defineOneEntry từ SDK và xác định url và token

Ví dụ:

import { defineOneEntry } from 'oneentry';

const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';

2. Tạo một client API với hàm defineOneEntry()

Ví dụ:

const { Forms, FormData } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});

3. Hình thành authData và xác thực người dùng với AuthProvider.auth()

Dữ liệu:

[
{
"marker": "email_reg",
"value": "your-user@email.com"
},
{
"marker": "password_reg",
"value": "123456"
}
]

Ví dụ:

const authResponse = await AuthProvider.auth('email', {
authData,
});
Kết quả:
{
"userIdentifier": "your-user@email.com",
"authProviderIdentifier": "email",
"accessToken": "eyJhbGciOiJIUzI1NiIsInR...pZCI6MTYsImF1dGhQ"
"refreshToken": "1745494429101-...-2834edf8"
}

4. Lấy người dùng để tạo mẫu frontend với Users.getUser()

Ví dụ:

const user = await Users.getUser();
Kết quả:
{
"id": 33,
"identifier": "your-user@email.com",
"authProviderIdentifier": "email",
"formData": [
{
"marker": "name_reg",
"type": "string",
"value": "UserName"
},
{
"marker": "email_notification_reg",
"type": "string",
"value": "your-user@email.com"
},
{
"marker": "phone_reg",
"type": "string",
"value": "+19258382551"
}
],
"formIdentifier": "reg",
"groups": [
1
],
"state": {},
"moduleFormConfigs": []
}

5. Cập nhật người dùng với Users.updateUser()

Dữ liệu:

{
"formIdentifier": "reg",
"authData": [
{
"marker": "password_reg",
"value": "123456"
}
],
"formData": {
"en_US": [
{
"marker": "name_reg",
"type": "string",
"value": "UserName"
},
{
"marker": "email_notification_reg",
"type": "string",
"value": "your-user@email.com"
},
{
"marker": "phone_reg",
"type": "string",
"value": "+19258382551"
}
]
},
"notificationData": {
"email": "your-user@email.com",
"phonePush": [
"+19258382551"
],
"phoneSMS": "+19258382551"
},
"langCode": "en_US"
}

Ví dụ:

const updateUser = await Users.updateUser(body);
Kết quả:
true

6. Lấy người dùng với Users.getUser()

Ví dụ:

const userData = await Users.getUser();
Kết quả:
{
"id": 33,
"identifier": "your-user@email.com",
"authProviderIdentifier": "email",
"formData": [
{
"marker": "name_reg",
"type": "string",
"value": "UserName"
},
{
"marker": "email_notification_reg",
"type": "string",
"value": "your-user@email.com"
},
{
"marker": "phone_reg",
"type": "string",
"value": "+19258382551"
}
],
"formIdentifier": "reg",
"groups": [
1
],
"state": {},
"moduleFormConfigs": []
}

Ví dụ cuối cùng

// 1. Import defineOneEntry from SDK and define PROJECT_URL and APP_TOKEN
import { defineOneEntry } from 'oneentry';

const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';

// 2. Creating an API client:
const { AuthProvider, Users } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});

// 3. Forming authData and authenticate user with AuthProvider.auth()
const emailReg = 'your-user@email.com';
const authData = [
{
marker: 'email_reg',
value: emailReg,
},
{
marker: 'password_reg',
value: '123456',
},
];
const authResponse = await AuthProvider.auth('email', {
authData,
});

// 4. Get user for generating frontend form with Users.getUser()
const user = await Users.getUser();

// 5. Update user with Users.updateUser()
const newPhone = '+79258382551';
const body = {
formIdentifier: 'reg',
authData: [
{
marker: 'password_reg',
value: '123456',
},
],
formData: [
...user.formData.filter(
(d: { marker: string }) => d.marker !== 'phone_reg',
),
{
marker: 'phone_reg',
type: 'string',
value: newPhone,
},
],
notificationData: {
email: emailReg,
phonePush: [newPhone],
phoneSMS: newPhone,
},
};
const updateUser = await Users.updateUser(body);
console.log(updateUser);

// 6. Get user with Users.getUser()
const userData = await Users.getUser();
console.log(userData);