Đăng Nhập Tài Khoản Mini App
API đăng nhập tài khoản cho ứng dụng Mini App sử dụng thông tin từ Zalo.
Người dùng có thể đăng nhập bằng thông tin Zalo đã được đăng ký trước đó.
POST https://api.socdo.vn/mini-app/v1/login
Request Headers
Content-Type: application/json
Token-Seller: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
Request Body
{
"zalo_user_id": "123456789",
"name": "Nguyễn Văn A",
"avatar": "https://example.com/avatar.jpg",
"gender": "male"
}
Tham số
| Tham số |
Loại |
Bắt buộc |
Mô tả |
Token-Seller |
header |
✓ |
JWT token từ API get-token-seller |
zalo_user_id |
string |
✓ |
ID người dùng từ Zalo |
name |
string |
✓ |
Tên người dùng |
avatar |
string |
- |
URL ảnh đại diện |
gender |
string |
- |
Giới tính (male/female) |
Response thành công (200)
{
"success": true,
"message": "Đăng nhập Zalo thành công",
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
"data": {
"user_id": 123,
"zalo_user_id": "123456789",
"name": "Nguyễn Văn A",
"username": "zalo_123456789",
"email": "[email protected]",
"mobile": "0123456789",
"avatar": "https://example.com/avatar.jpg",
"gender": "male",
"user_money": 0,
"user_money2": 0,
"doitac": "zalo",
"seller_id": 23933,
"shop_id": 23933
}
}
Response lỗi (404 - Chưa đăng ký)
{
"success": false,
"message": "Tài khoản chưa được đăng ký. Vui lòng đăng ký trước.",
"need_signup": true,
"zalo_user_id": "123456789"
}
Response lỗi (400 - Thiếu thông tin)
{
"success": false,
"message": "Vui lòng cung cấp đầy đủ thông tin Zalo (zalo_user_id, name)"
}
Ví dụ JavaScript
// Đăng nhập Mini App
async function loginMiniApp(userData) {
try {
const response = await fetch('https://api.socdo.vn/mini-app/v1/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(userData)
});
const result = await response.json();
if (result.success) {
// Lưu token để sử dụng cho các request tiếp theo
localStorage.setItem('auth_token', result.token);
console.log('Đăng nhập thành công:', result.data);
return result;
} else {
console.error('Lỗi đăng nhập:', result.message);
return result;
}
} catch (error) {
console.error('Lỗi kết nối:', error);
return { success: false, message: 'Lỗi kết nối mạng' };
}
}
// Sử dụng
const userData = {
zalo_user_id: "123456789",
name: "Nguyễn Văn A",
avatar: "https://example.com/avatar.jpg",
gender: "male"
};
loginMiniApp(userData).then(result => {
if (result.success) {
// Chuyển hướng đến trang chính của app
window.location.href = '/dashboard';
} else if (result.need_signup) {
// Chuyển hướng đến trang đăng ký
window.location.href = '/register';
}
});
Lưu ý quan trọng
- Cập nhật thông tin: Khi đăng nhập thành công, thông tin người dùng sẽ được cập nhật từ Zalo
- JWT Token: Token có thời hạn 1 năm, lưu trữ để sử dụng cho các API khác
- Kiểm tra đăng ký: Nếu tài khoản chưa tồn tại, API sẽ trả về lỗi 404 với
need_signup: true
- Cập nhật last_login: Thời gian đăng nhập cuối sẽ được cập nhật tự động
- Token-Seller Required: API yêu cầu Token-Seller header để phân biệt shop
- Shop Integration: Token chứa seller_id và shop_id để liên kết với shop
Luồng xử lý đăng nhập
- Kiểm tra tài khoản có tồn tại với
zalo_user_id không
- Nếu có: Cập nhật thông tin từ Zalo và tạo JWT token
- Nếu không: Trả về lỗi 404 với
need_signup: true
- Client kiểm tra response và chuyển hướng phù hợp