MiniApp đăng nhập sử dụng tài khoản V-App
Khi người dùng truy xất vào 1 MiniApp sẽ phát sinh nhu cầu xác thực với hệ thống Backend của MiniApp thông qua ID của nền tảng V-App. Tài liệu này mô tả luồng đăng nhập và yêu cầu nghiệp vụ để thực hiện việc đó:
Tổng quan
Mô Tả Luồng
Hệ thống đăng nhập tuân theo trình tự sau (khớp với sơ đồ trên):
- Người dùng vào MiniApp: Người dùng mở/ truy cập MiniApp.
- Kiểm tra session: MiniApp kiểm tra session hiện tại.
- Nếu đã có session: Người dùng tiếp tục sử dụng, không cần bước đăng nhập tiếp theo.
- Nếu chưa có session: Thực hiện đăng nhập yên lặng (các bước 3–9, và nếu cần thì 3b–8b).
- Lấy mã ủy quyền (đăng nhập yên lặng): MiniApp gọi
getAuthCode({ scopes: ['auth'] })không bật consent để lấyauthCode. Scopeauthcho phép xác thực mà không cần người dùng bấm đồng ý. - Gửi authCode lên Backend: MiniApp gửi
authCodelên MiniApp Backend. - Đổi authCode lấy Access Token: MiniApp Backend gọi
POST /oauth2/token/exchangetới Open APIs, nhận Access Token. - Lấy thông tin user cơ bản: MiniApp Backend lấy thông tin người dùng bằng Access Token.
- Nhận V-App user_id: Open APIs trả về
user_id(định danh người dùng trên V-App). - Xử lý theo trạng thái user:
- Nếu V-App user_id đã tồn tại trong hệ thống: MiniApp Backend load thông tin đã lưu (bỏ qua bước 3b–8b).
- Nếu V-App user_id chưa tồn tại (user mới):
- 3b. MiniApp gọi
getAuthCode({ scopes: ['profile', 'phone', 'email'] })bật consent để người dùng đồng ý cấp thông tin chi tiết. - 4b. MiniApp gửi
authCodemới lên MiniApp Backend. - 5b. Backend gọi
POST /oauth2/token/exchangelấy Access Token mới. - 6b. Backend lấy thông tin chi tiết user (tên, SĐT, email).
- 7b. Open APIs trả về user info chi tiết (user_id, name, phone, email).
- 8b. MiniApp Backend tạo user mới và lưu thông tin.
- 3b. MiniApp gọi
- Thiết lập session: MiniApp Backend đặt session / cookie đăng nhập và trả về cho MiniApp.
- Sau khi đăng nhập: Người dùng thao tác trong MiniApp; MiniApp gửi yêu cầu nghiệp vụ kèm session, Backend truy vấn trạng thái và trả dữ liệu, MiniApp xử lý logic nghiệp vụ.
Các Thành Phần Chính
- MiniApp: Ứng dụng frontend mà người dùng tương tác
- MiniApp Backend: Ứng dụng phía server xử lý xác thực và logic nghiệp vụ
- Open APIs: Nền tảng API do V-App cung cấp
Các loại token
Mô tả các loại token xuất hiện trong luồng và vai trò của chúng:
-
authCode(mã ủy quyền):- Nguồn: tạo bởi SDK trên MiniApp (
getAuthCode()). - Mục đích: mã ngắn hạn mà MiniApp gửi cho MiniApp Backend để đổi lấy token truy cập tài nguyên.
- Thời hạn: rất ngắn (one-time use). Không lưu trữ lâu trên client.
- Lưu trữ: chỉ truyền qua kết nối TLS từ MiniApp tới Backend và dùng ngay trên server.
- Nguồn: tạo bởi SDK trên MiniApp (
-
Access Token(access_token):- Nguồn: trả về từ Open APIs sau khi Backend gọi
POST /oauth2/token/exchangekèmauthCode. - Mục đích: đại diện cho quyền truy cập tài nguyên của người dùng để Backend gọi OpenAPIs.
- Thời hạn: ngắn đến vừa (tùy cấu hình Open APIs). Có thể kèm refresh mechanism.
- Lưu trữ: chỉ lưu an toàn trên MiniApp Backend (server-side). Không gửi trực tiếp tới client.
- Nguồn: trả về từ Open APIs sau khi Backend gọi
-
session cookie/session id/ Token riêng của MiniApp Backend (cookie phiên đăng nhập):- Nguồn: do MiniApp Backend tạo và gửi về MiniApp sau khi đổi
authCodevà khởi tạo trạng thái đăng nhập. - Mục đích: duy trì phiên làm việc giữa MiniApp (browser/webview) và MiniApp Backend; xác thực các yêu cầu nghiệp vụ tiếp theo.
- Thời hạn: tuỳ cấu hình backend (session TTL).
- Lưu trữ: cookie an toàn (HttpOnly, Secure, SameSite phù hợp). Không chứa token nhạy cảm ở dạng plain text.
- Nguồn: do MiniApp Backend tạo và gửi về MiniApp sau khi đổi