Xác thực OAuth 2.0

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Tài liệu này mô tả các điểm cuối mà bạn gọi để thực hiện luồng mã ủy quyền OAuth 2.0, cũng như các điểm cuối khác hữu ích cho việc triển khai xác thực trong các ứng dụng của bạn.

URL cơ bản

https://apis.roblox.com/oauth
Các điểm cuối

GET v1/authorize
POST v1/token
POST v1/token/introspect
POST v1/token/resources
POST v1/token/revoke
GET v1/userinfo
GET .well-known/openid-configuration

Ủy quyền

GET v1/authorize

Nhận ủy quyền từ người dùng để xác thực với tài khoản Roblox của họ. Hệ thống kỳ vọng một URL ủy quyền hợp lệ được xây dựng với các tham số đã chỉ định. Điểm cuối này hỗ trợ ủy quyền PKCE.

Các tham số truy vấn

TênMô tảBắt buộcVí dụ
client_idID client của ứng dụng.816547628409595165403873012
redirect_uriURL mà người dùng được chuyển hướng trở lại sau khi hoàn thành luồng ủy quyền.`https://www.roblox.com/example-redirect``
scopeCác phạm vi được yêu cầu, phân cách bằng khoảng trắng. Sử dụng phạm vi openid để nhận ID token. Sử dụng cả phạm vi openidprofile để có thêm thông tin người dùng.openid profile
response_typeCác thông tin mà ứng dụng muốn nhận lại. Giá trị mặc định là loại cấp mã ủy quyền.none, code
promptChỉ định các trang xác thực và đồng ý nào được hiển thị cho người dùng. Một số màn hình là cần thiết cho các ứng dụng bên thứ ba và không thể bị bỏ qua.khôngnone, login, consent, select_account
nonceSố ngẫu nhiên mã hóa để liên kết token với client.không<random_value_1>
stateMột giá trị mờ đục ngăn chặn giả mạo yêu cầu giữa các trang, một loại cuộc tấn công độc hại. Được gửi lại cho ứng dụng sau khi ủy quyền.không<app-provided-opaque-value>
code_challengeChuỗi kết quả của việc áp dụng code_challenge_method vào code_verifier.khôngChuỗi được mã hóa Base64-URL
code_challenge_methodHàm được áp dụng cho code_verifier.khôngS256

Yêu cầu

Ví dụ Yêu cầu Chuyển hướng đến Luồng Ủy quyền

https://apis.roblox.com/oauth/v1/authorize?client_id=816547628409595165403873012&redirect_uri=https://my-app.com/redirect&scope=openid&response_type=code&nonce=12345&state=6789

Phản hồi

Sau khi gọi điểm cuối này, người dùng sẽ được chuyển hướng đến URL chuyển hướng đã chỉ định với mã ủy quyền trong tham số truy vấn code. Mã ủy quyền:

  • Có thời gian sử dụng một phút.
  • Chỉ có thể được đổi một lần.
  • Không hợp lệ sau một lần sử dụng.

Trao đổi mã

Để nhận mã truy cập API, hãy trao đổi một mã ủy quyền nhận được lấy một tập hợp mã bí mật. Tất cả các điểm cuối mã hỗ trợ hai loại xác thực client:

  1. HTTP Basic Authentication Scheme với một tiêu đề xác thực: Authorization: Basic Base64 encoded(<client_id>:<client_secret>).
  2. ID client và mật khẩu trong thân yêu cầu dưới dạng tham số.

Danh sách sau mô tả các mã khác nhau mà bạn nhận được từ điểm cuối này.

  • Mã truy cập - Đại diện cho sự ủy quyền từ một nhà phát triển hoặc người dùng cho một ứng dụng bên thứ ba truy cập vào tài nguyên Roblox được bảo vệ của họ. Đây là một chuỗi chỉ định một phạm vi cụ thể, thời gian sống và các thuộc tính truy cập khác. Khi máy chủ ủy quyền Roblox phát hành một mã truy cập cho một ứng dụng, mã này:

    • Có thời gian sử dụng 15 phút.
    • Có thể được sử dụng nhiều lần trước khi hết hạn.
    • Có thể bị vô hiệu trước khi hết hạn nếu người dùng ứng dụng thu hồi ủy quyền.
  • Mã làm mới - Cập nhật một phiên ủy quyền. Một ứng dụng có thể sử dụng mã làm mới để nhận một tập hợp mã mới, bao gồm mã truy cập, mã làm mới và ID token. Mã làm mới:

    • Có thời gian sử dụng 90 ngày.
    • Chỉ có thể được sử dụng một lần trước khi hết hạn để làm mới các mã.
    • Có thể bị vô hiệu trước khi hết hạn nếu người dùng ứng dụng thu hồi ủy quyền.
  • ID token - Cung cấp bằng chứng rằng danh tính của người dùng đã được xác thực. Nội dung của nó phụ thuộc vào các phạm vi được yêu cầu và có thể chứa thông tin cơ bản về người dùng, bao gồm tên hiển thị và tên người dùng Roblox của người dùng. ID token chỉ được dùng để xác thực danh tính và không cung cấp quyền truy cập vào bất kỳ tài nguyên Roblox nào.

POST v1/token

Nhận một tập hợp mã với một mã ủy quyền.

Yêu cầu

(x-www-form-urlencoded)

KhóaGiá trị
code<mã ủy quyền>
code_verifier<giá trị xác thực pkce>
grant_typeauthorization_code
client_id<client_id>
client_secret<client_secret>
Ví dụ Yêu cầu Nhận Mã

curl --location --request POST 'https://apis.roblox.com/oauth/v1/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=840974200211308101' \
--data-urlencode 'client_secret=RBX-CR9...St12L' \
--data-urlencode 'grant_type=authorization_code' \
--data-urlencode 'code=yCnq4ofX1...XmGpdx'

Phản hồi

Ví dụ Phản hồi Nhận Mã

{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}

POST v1/token

Nhận một tập hợp mã với một mã làm mới.

Yêu cầu

(x-www-form-urlencoded)

KhóaGiá trị
grant_typerefresh_token
refresh_token<refresh_token>
client_id<client_id>
client_secret<client_secret>
Ví dụ Yêu cầu Mã Làm Mới

curl --location --request POST 'https://apis.roblox.com/oauth/v1/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=refresh_token' \
--data-urlencode 'refresh_token=Ujfstayclfdlbm...BGydlsnU' \
--data-urlencode 'client_id=840974200211308101' \
--data-urlencode 'client_secret=RBX-CR9...St12L'

Phản hồi

Ví dụ Phản hồi Nhận Mã Làm Mới

{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}

POST v1/token/introspect

Nhận thông tin về một mã. Xác minh xem mã có hợp lệ và chưa hết hạn hay không. Hữu ích cho việc xác thực không trạng thái. Sử dụng chỉ khi API mà bạn đang truy cập không yêu cầu một tài nguyên, chẳng hạn như API Tài sản, hoặc nếu bạn chỉ muốn thấy các yêu cầu cụ thể của mã.

Yêu cầu

(x-www-form-urlencoded)

KhóaGiá trị
token<access_token>, <refresh_token> hoặc <id_token>
client_id<client_id>
client_secret<client_secret>
Ví dụ Yêu cầu Xem Mã

curl --location --request POST 'https://apis.roblox.com/oauth/v1/token/introspect' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'token=eyjlflabtfl...4gxqYBG' \
--data-urlencode 'client_id=840974200211308101' \
--data-urlencode 'client_secret=RBX-CR9...St12L'

Phản hồi

Ví dụ Phản hồi Xem Mã

{
"active": true,
"jti": "RT.2GcjvTduKzk6QY9tjTfm",
"iss": "https://apis.roblox.com/oauth/",
"token_type": "Bearer",
"client_id": "840974200211308101",
"aud": "4239311013248676173",
"sub": "1516563360",
"scope": "universe-messaging-service:publish",
"exp": 1676394509,
"iat": 1660842510
}

POST v1/token/resources

Kiểm tra xem mã có thể truy cập vào một tài nguyên cụ thể hay không bằng cách nhận danh sách các tài nguyên của người dùng mà người dùng đã cho phép. Điều này hữu ích cho việc xác thực có trạng thái.

Yêu cầu

(x-www-form-urlencoded)

KhóaGiá trị
token<access_token>
client_id<client_id>
client_secret<client_secret>
Ví dụ Yêu cầu Nhận Tài Nguyên Mã

curl --location --request POST 'https://apis.roblox.com/oauth/v1/token/resources' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'token=eyjlflabtfl...4gxqYBG' \
--data-urlencode 'client_id=840974200211308101' \
--data-urlencode 'client_secret=RBX-CR9...St12L'

Phản hồi

Giá trị U trong ids cho biết rằng một phạm vi đã cấp quyền truy cập vào một tài nguyên thuộc sở hữu của owner ủy quyền.

Ví dụ Phản hồi Nhận Tài Nguyên Mã

{
"resource_infos": [
{
"owner": {
"id": "1516563360",
"type": "User"
},
"resources": {
"universe": {
"ids": ["3828411582"]
},
"creator": {
"ids": ["U"]
}
}
}
]
}

POST v1/token/revoke

Thu hồi một phiên ủy quyền sử dụng mã làm mới đã cung cấp.

Yêu cầu

(x-www-form-urlencoded)

KhóaGiá trị
token<refresh_token>
client_id<client_id>
client_secret<client_secret>
Ví dụ Yêu cầu Thu Hồi Mã

curl --location --request POST 'https://apis.roblox.com/oauth/v1/token/revoke' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'token=Ujfstayclfdlbm...BGydlsnU' \
--data-urlencode 'client_id=840974200211308101' \
--data-urlencode 'client_secret=RBX-CR9...St12L'

Phản hồi

200 OK với phản hồi trống

Thông tin Người dùng

GET /v1/userinfo

Nhận ID người dùng Roblox và các siêu dữ liệu người dùng khác.

Yêu cầu

Tiêu đề xác thực: Authorization: Bearer <access_token>

Ví dụ Yêu cầu Nhận Thông Tin Người Dùng

curl --location --request GET 'https://apis.roblox.com/oauth/v1/userinfo' \
--header 'Authorization: Bearer eyjlflabtfl...4gxqYBG'

Phản hồi

Bạn có thể sử dụng giá trị sub để xác định duy nhất người dùng. Người dùng có thể thay đổi tên người dùng và tên hiển thị trên Roblox của họ, vì vậy đừng sử dụng chúng như những định danh duy nhất để tham chiếu đến người dùng trên ứng dụng của bạn.

Khẳng địnhMô tả
subID người dùng Roblox.
nameTên hiển thị Roblox.
nicknameTên hiển thị Roblox.
preferred_usernameTên người dùng Roblox.
created_atThời gian tạo tài khoản Roblox dưới dạng dấu thời gian Unix.
profileURL hồ sơ tài khoản Roblox.
pictureHình đại diện của Roblox. Có thể là null nếu hình đại diện chưa được tạo hoặc đã bị kiểm duyệt.
Ví dụ Người Dùng với Phạm Vi Hồ Sơ

{
"sub": "1516563360",
"name": "exampleuser",
"nickname": "exampleuser",
"preferred_username": "exampleuser",
"created_at": 1584682495,
"profile": "https://www.roblox.com/users/1516563360/profile",
"picture": "https://tr.rbxcdn.com/03dc2a9abe7b1aacaaf93ea46d5c0646/150/150/AvatarHeadshot/Png"
}
Ví dụ Người Dùng không có Phạm Vi Hồ Sơ

{
"sub": "1516563360"
}

Khám Phá

Tài liệu Khám Phá OpenID Connect (OIDC) là một tài liệu JSON chứa siêu dữ liệu về các chi tiết cấu hình Open Cloud, bao gồm danh sách các phạm vi và tuyên bố liên quan đến danh tính được hỗ trợ. Bạn có thể sử dụng nó để khám phá động thông tin về các điểm cuối OAuth 2.0 và cấu hình Open Cloud, chẳng hạn như điểm cuối ủy quyền, điểm cuối mã, và bộ khóa công khai.

Sau khi truy xuất và lấy Tài liệu Khám Phá từ URI tài liệu Khám Phá, bạn có thể kiểm tra thủ công các trường trong phản hồi để xác thực thông tin, hoặc bạn có thể tạo thư viện tùy chỉnh của riêng mình để ánh xạ các trường trong lược đồ phản hồi để tự động hóa quy trình làm việc của bạn.

GET .well-known/openid-configuration

Phản hồi

Tất cả các phản hồi Tài liệu Khám Phá theo cùng một cấu trúc như phản hồi ví dụ sau.

Ví dụ Phản hồi Tài liệu Khám Phá

{
"issuer": "https://apis.roblox.com/oauth/",
"authorization_endpoint": "https://apis.roblox.com/oauth/v1/authorize",
"token_endpoint": "https://apis.roblox.com/oauth/v1/token",
"introspection_endpoint": "https://apis.roblox.com/oauth/v1/token/introspect",
"revocation_endpoint": "https://apis.roblox.com/oauth/v1/token/revoke",
"resources_endpoint": "https://apis.roblox.com/oauth/v1/token/resources",
"userinfo_endpoint": "https://apis.roblox.com/oauth/v1/userinfo",
"jwks_uri": "https://apis.roblox.com/oauth/v1/certs",
"registration_endpoint": "https://create.roblox.com/dashboard/credentials",
"service_documentation": "https://create.roblox.com/docs/reference/cloud",
"scopes_supported": [
"openid",
"profile",
"email",
"verification",
"credentials",
"age",
"premium",
"roles"
],
"response_types_supported": ["none", "code"],
"subject_types_supported": ["public"],
"id_token_signing_alg_values_supported": ["ES256"],
"claims_supported": [
"sub",
"type",
"iss",
"aud",
"exp",
"iat",
"nonce",
"name",
"nickname",
"preferred_username",
"created_at",
"profile",
"email",
"email_verified",
"verified",
"age_bracket",
"premium",
"roles",
"internal_user"
],
"token_endpoint_auth_methods_supported": [
"client_secret_post",
"client_secret_basic"
]
}
©2026 Roblox Corporation. Roblox, logo Roblox và Powering Imagination là các nhãn hiệu đã đăng ký và chưa đăng ký của chúng tôi tại Hoa Kỳ và các quốc gia khác.