REST API v1

Đăng nhập bằng RentID (OAuth 2.0)

RentID cho phép đối tác tích hợp phương thức xác thực an toàn, giúp người dùng đăng nhập vào ứng dụng của bạn bằng chính tài khoản RentID của họ.

1. Quy trình Xác thực

Luồng đăng nhập qua RentID (OAuth 2.0) diễn ra qua 4 bước cơ bản:

  1. Chuyển hướng: Khi người dùng bấm "Đăng nhập bằng RentID", ứng dụng chuyển hướng họ sang trang đăng nhập của RentID.
  2. Người dùng đồng ý: Người dùng đăng nhập tài khoản và nhấn xác nhận cho phép ứng dụng truy cập thông tin của họ.
  3. Nhận mã xác thực: RentID chuyển hướng người dùng quay lại website của bạn kèm theo một mã xác thực tạm thời (code).
  4. Hoàn tất đăng nhập: Máy chủ (Backend) của bạn dùng mã xác thực này để lấy thông tin tài khoản người dùng và hoàn tất phiên đăng nhập.

2. Bước 1: Yêu cầu Ủy quyền (Authorization Request)

Khi người dùng nhấp vào nút "Đăng nhập bằng RentID" trên hệ thống của bạn, hãy chuyển hướng trình duyệt của họ đến đường dẫn:

GET https://rentid.vn/oauth/authorize?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&response_type=code&scope=profile+email+phone&state={RANDOM_STATE}
Tham số Bắt buộc Mô tả
client_id Bắt buộc Client ID được cấp cho ứng dụng của bạn.
redirect_uri Bắt buộc URL mà RentID sẽ chuyển hướng người dùng về sau khi ủy quyền (phải khớp chính xác với URL đã đăng ký).
response_type Bắt buộc Luôn truyền giá trị cố định là code.
scope Tùy chọn Danh sách quyền cách nhau bằng dấu cách hoặc dấu +: profile email phone trust_score.
state Khuyên dùng Chuỗi ngẫu nhiên do hệ thống bạn sinh ra để phòng chống tấn công CSRF. RentID sẽ trả lại nguyên vẹn chuỗi này khi redirect.

3. Bước 2: Đổi mã Code lấy Access Token

Sau khi người dùng đồng ý cấp quyền, RentID sẽ chuyển hướng về redirect_uri?code=AUTH_CODE&state=STATE. Backend của bạn thực hiện một request POST tới endpoint sau:

POST https://rentid.vn/oauth/token Content-Type: application/json
curl -X POST "https://rentid.vn/oauth/token" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "grant_type": "authorization_code",
    "client_id": "01a115cc-2fb6-712d-9127-d39ca860774f",
    "client_secret": "fbk8T6YIhHw61nqFwAxg65aPnAG2zGI2J3UtujxT",
    "redirect_uri": "https://partner-domain.com/auth/rentid/callback",
    "code": "def5020058e3..."
  }'

Dữ liệu JSON trả về khi thành công (HTTP 200):

{
  "token_type": "Bearer",
  "expires_in": 1296000,
  "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...",
  "refresh_token": "def50200..."
}

4. Bước 3: Lấy Thông tin Người dùng (User Profile API)

Sau khi có access_token, hệ thống của bạn gửi request với Header Authorization Bearer để nhận thông tin định danh:

GET https://rentid.vn/api/user Authorization: Bearer <access_token>
curl -X GET "https://rentid.vn/api/user" \
  -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9..." \
  -H "Accept: application/json"

Dữ liệu Profile trả về (Ví dụ khi ứng dụng yêu cầu scope=profile email phone):

{
  "status": 200,
  "success": true,
  "message": "Lấy thông tin người dùng RentID thành công.",
  "data": {
    "id": 105,
    "full_name": "Nguyễn Văn An",
    "avatar_url": "https://core.rentid.vn/storage/avatars/user_105.jpg",
    "account_type": "individual",
    "email": "an.nguyen@example.com",
    "email_verified_at": "2026-08-15T08:30:00.000000Z",
    "phone": "0987654321",
    "phone_verified_at": "2026-08-15T08:35:00.000000Z"
  }
}

5. Danh sách Quyền (Scopes) Hỗ trợ

RentID áp dụng nguyên tắc kiểm soát dữ liệu tối thiểu (Principle of Least Privilege). Endpoint /api/user sẽ chỉ trả về những trường tương ứng với Scopes mà ứng dụng của bạn yêu cầu và được người dùng đồng ý:

Tên Scope Trường dữ liệu mở khóa Mô tả hiển thị cho người dùng
profile id, full_name, avatar_url, account_type Xem thông tin cơ bản tài khoản (Họ tên, ảnh đại diện, loại tài khoản).
email email, email_verified_at Xem địa chỉ email và thời gian xác minh email của tài khoản.
phone phone, phone_verified_at Xem số điện thoại của tài khoản (trả về null nếu chưa cập nhật).
trust_score cached_score, score_synced_at Xem điểm tín nhiệm đánh giá uy tín thuê xe (RentID Trust Score).

6. Tự động Cấp & Quản lý OAuth Client bằng API Key

Để tích hợp tính năng Đăng nhập bằng RentID, hệ thống đối tác cần sở hữu cặp thông tin client_id và client_secret. RentID cung cấp API tự phục vụ (Self-Provisioning): Quý đối tác chỉ cần gửi Partner API Key (x-api-key) được cấp để tạo, tra cứu hoặc cấp lại khóa bí mật mà không cần chờ duyệt thủ công.

POST https://rentid.vn/api/v1/partner/oauth-client Hỗ trợ JSON & Multipart Form
Cách 1: Gửi JSON với logo_url (ảnh online)
curl -X POST "https://rentid.vn/api/v1/partner/oauth-client" \
  -H "x-api-key: rk_live_your_partner_api_key" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "name": "Cổng Đăng Nhập Đối Tác",
    "logo_url": "https://your-domain.com/assets/logo.png",
    "redirect_uris": [
      "https://partner-domain.com/auth/rentid/callback"
    ]
  }'
Cách 2: Upload file ảnh trực tiếp (multipart/form-data)
curl -X POST "https://rentid.vn/api/v1/partner/oauth-client" \
  -H "x-api-key: rk_live_your_partner_api_key" \
  -H "Accept: application/json" \
  -F "name=Cổng Đăng Nhập Đối Tác" \
  -F "logo=@/duong-dan/logo-app.png" \
  -F "redirect_uris[]=https://partner-domain.com/auth/rentid/callback"

Tham số Body (JSON / Multipart Form)

Trường Kiểu Bắt buộc Mô tả
redirect_uris Array<String> Khi tạo mới Danh sách URL hợp lệ mà RentID được phép chuyển hướng người dùng về sau khi đồng ý cấp quyền. Hỗ trợ nhiều callback URLs (ví dụ: production domain và localhost).
redirect_uri String Tùy chọn Đường dẫn URL callback duy nhất (có thể truyền thay thế cho redirect_uris).
name String Tùy chọn Tên hiển thị ứng dụng trên màn hình người dùng xác nhận cấp quyền (mặc định lấy theo tên tổ chức đối tác).
regenerate_secret Boolean Tùy chọn Truyền true nếu muốn hủy secret cũ và tạo một client_secret mới (hữu ích khi cần xoay vòng khóa hoặc nghi ngờ lộ khóa).
logo File (Binary) Tùy chọn File ảnh logo ứng dụng (PNG, JPG, WEBP, SVG, tối đa 2MB). Khuyến nghị ảnh vuông tỉ lệ 1:1 (tối thiểu 128x128px) để hiển thị sắc nét trên màn hình đăng nhập và cấp quyền.
logo_url String (URL) Tùy chọn Đường dẫn URL trực tuyến đến ảnh logo của ứng dụng (dùng khi bạn đã host ảnh sẵn trên CDN riêng).

Dữ liệu JSON trả về khi thành công (HTTP 201 khi tạo mới hoặc 200 khi cập nhật):

{
  "status": 201,
  "success": true,
  "message": "Khởi tạo OAuth Client thành công.",
  "data": {
    "client_id": "0199c017-d572-7489-b7b5-2efda465e905",
    "client_secret": "fbk8T6YIhHw61nqFwAxg65aPnAG2zGI2J3UtujxT",
    "name": "Cổng Đăng Nhập Đối Tác",
    "logo_url": "https://your-domain.com/storage/oauth-clients/logo.png",
    "redirect_uris": [
      "https://partner-domain.com/auth/rentid/callback",
      "http://localhost:3000/callback"
    ],
    "grant_types": [
      "authorization_code",
      "refresh_token"
    ],
    "created_at": "2026-10-07T17:30:00.000000Z"
  }
}

Tra cứu lại thông tin OAuth Client bất cứ lúc nào

Nếu cần kiểm tra lại Client ID, Client Secret hoặc danh sách Callback URIs đã cấu hình, bạn chỉ cần thực hiện request GET:

GET https://rentid.vn/api/v1/partner/oauth-client
curl -X GET "https://rentid.vn/api/v1/partner/oauth-client" \
  -H "x-api-key: rk_live_your_partner_api_key" \
  -H "Accept: application/json"

play_circle Thử nghiệm Trực tiếp: Quản lý OAuth Client

Bạn có thể kiểm tra trực tiếp API Quản lý OAuth Client bằng cách chọn phương thức (GET hoặc POST) và gửi request bên dưới:

/api/v1/partner/oauth-client
Phản hồi (Response)

play_circle 7. Thử nghiệm Trực tiếp (Sandbox)

Trải nghiệm thực tế toàn bộ luồng "Đăng nhập bằng RentID": Điền thông tin Client, chọn quyền truy cập và bấm nút đăng nhập để xem dữ liệu hồ sơ cá nhân trả về:

error

Đăng nhập không thành công

GET /oauth/authorize
Phản hồi (Response)

Đăng nhập

error

Hoặc đăng nhập với

Chưa có tài khoản? Đăng ký ngay