Tài liệu này mô tả các điểm cuối mà bạn gọi để thực hiện dòng lệnh xác nhận OAuth 2.0, cũng như các điểm cuối khác hữu ích để thực hiện xác thực trong ứng dụng của bạn.
Base URL
https://apis.roblox.com/oauth
Endpoints
GET v1/authorizePOST v1/tokenPOST v1/token/introspectPOST v1/token/resourcesPOST v1/token/revokeGET v1/userinfoGET .well-known/openid-configuration
Xác nhận
GET v1/authorize
Nhận được sự cho phép từ người dùng để xác thực với tài khoản Roblox của họ. mong đợi một URL xác nhận hợp lệ được xây dựng với các tham số được định nghĩa.Điểm cuối này hỗ trợ xác nhận PKCE.
Tham số truy vấn
Tên | Yêu cầu | Ví dụ | |
---|---|---|---|
client_id | ID khách hàng của ứng dụng. | yes | 816547628409595165403873012 |
redirect_uri | URL mà người dùng được chuyển lại sau khi hoàn thành dòng xác nhận. | yes | https://www.roblox.com/example-redirect |
phạm vi yêu cầu | Các phạm vi yêu cầu, không gian được phân tách.Sử dụng phạm vi openid để nhận một token ID.Sử dụng phạm vi openid và profile để lấy thêm thông tin người dùng. | yes | openid profile |
response_type | Các tính năng xác thực mà ứng dụng muốn trả lại.Mặc định là đánh máycho phép mã xác thực. | yes | none , code |
prompt | Xác định các trang xác minh và chấp thuận nào sẽ được hiển thị cho người dùng.Một số màn hình là bắt buộc đối với ứng dụng bên thứ ba và không thể bỏ qua. | no | none , login , consent , select_account |
nonce | Số khóa mã hóa mà gắn token với khách hàng. | no | <random_value_1> |
trạng thái | Một giá trị mờ mịt ngăn chặn cuộc tấn công lừa đảo trang web, một loại cuộc tấn công có hại.Trả lại ứng dụng sau khi được xác nhận. | no | <app-provided-opaque-value> |
code_challenge | Chuỗi kết quả áp dụng code_challenge_method đến code_verifier . | no | Base64-URL-encoded chuỗi |
code_challenge_method | Chức năng được áp dụng cho code_verifier . | không | S256 |
Yêu cầu
Example Request of Directing to Authorization Flow
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 được chuyển hướng đến URL chuyển hướng được chỉ định với mã xác nhận trong một tham số truy vấn code .Mã xác nhận:
- Có thời gian sống một phút.
- Chỉ có thể được nhận một lần.
- Không hợp lệ sau khi sử dụng một lần.
Trao trao đổitoken
Để lấy token để truy cập API, trao đổi một mã xác nhận cho một bộ token bí mật.Tất cả các điểm cuối token hỗ trợ hai loại xác thực khách hàng:
- HTTP Basic Authentication Scheme với một tiêu đề xác nhận: Authorization: Basic Base64 encoded(<client_id>:<client_secret>) .
- ID khách hàng và bí mật trong thân yêu cầu như tham số.
Danh sách sau đây mô tả các token khác nhau bạn nhận được từ điểm cuối này.
Token truy cập - Đại diện cho quyền xác nhận từ một người tạo hoặc người dùng cho một ứng dụng bên thứ ba để truy cập các tài nguyên Roblox bảo mật của họ.Đó là một chuỗi để đánh dấu một phạm vi cụ thể, thời gian sống và các thuộc tính truy cập khác.Một khi máy chủ xác thực của Roblox phát hành một token truy cập cho một ứng dụng, token:
- Hợp lệ trong 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 hóa trước khi hết hạn nếu người dùng ứng dụng thu hồi quyền xác nhận.
Làm mới token - Làm mới phiên xác nhận.Một ứng dụng có thể sử dụng token làm mới để lấy một bộ mới các token, bao gồm một token truy cập, một token làm mới và một token ID.Một token làm mới:
- Hợp lệ trong 90 ngày.
- Chỉ có thể sử dụng một lần trước khi hết hạn để làm mới token.
- Có thể bị vô hiệu hóa trước khi hết hạn nếu người dùng ứng dụng thu hồi quyền xác nhận.
Token ID - Cung cấp bằng chứng rằng danh tính của người dùng đã được xác minh.Nội dung của nó phụ thuộc vào phạm vi được yêu cầu và có thể chứa thông tin người dùng cơ bản, bao gồm tên hiển thị Roblox của người dùng và tên tài khoảndùng.Token ID chỉ dành cho mục đích xác minh 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 bộ token với một mã xác nhận.
Yêu cầu
(x-www-form-urlencoded)
| Chìa khóa | Giá trị | | --------- | ------------- | ------------------ | | code | | | code_verifier | | | grant_type | authorization_code | | client_id | | | client_secret | | | client_secret |
|
Ví dụ Yêu cầu Nhận token
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ụ nhận được phản hồi token
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token
Nhận một bộ token với một token làm mới.
Yêu cầu
(x-www-form-urlencoded)
Chìa khóa | Giá trị |
---|---|
grant_type | refresh_token |
refresh_token | <refresh_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Yêu cầu làm mới token ví dụ
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
Yêu cầu làm mới token ví dụ
{
"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 token.Xác minh xem token có hiện đang hợp lệ và chưa hết hạn hay chưa.Hữu ích cho xác nhận vô chủ.Chỉ sử dụng nếu API bạn đang truy cập không yêu cầu tài nguyên, chẳng hạn như API Tài sản, hoặc nếu bạn chỉ muốn xem các yêu sách cụ thể của token.
Yêu cầu
(x-www-form-urlencoded)
Chìa khóa | Giá trị |
---|---|
token | <access_token> , <refresh_token> hoặc <id_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Yêu cầu token nhìn nhận ví dụ
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 Token Introspect
{
"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ột token có thể truy cập một tài nguyên cụ thể bằng cách nhận danh sách tài nguyên người dùng mà người dùng đã cho phép.Điều này hữu ích cho xác nhận có trạng thái.
Yêu cầu
(x-www-form-urlencoded)
Chìa khóa | Giá trị |
---|---|
token | <access_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Ví dụ Yêu cầu Tài nguyên Token Nhận
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 thấy rằng một phạm vi đã cho phép truy cập vào tài nguyên thuộc về người xác nhận owner .
Ví dụ nhận được phản hồi tài nguyên token
{
"resource_infos": [
{
"owner": {
"id": "1516563360",
"type": "User"
},
"resources": {
"universe": {
"ids": ["3828411582"]
},
"creator": {
"ids": ["U"]
}
}
}
]
}
POST v1/token/revoke
Thu hồi phiên xác nhận bằng cách sử dụng token làm mới cung cấp.
Yêu cầu
(x-www-form-urlencoded)
Chìa khóa | Giá trị |
---|---|
token | <refresh_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Yêu cầu rút lại token ví dụ
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 một 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 métadữ liệu người dùng khác.
Yêu cầu
Tiêu đề xác nhận : Authorization: Bearer <access_token>Ví dụ Yêu cầu 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ị của Roblox, vì vậy đừng sử dụng chúng như nhận dạng duy nhất để tham chiếu đến người dùng trên ứng dụng của bạn.
Nhận | Mô tả |
---|---|
sub | ID người dùng Roblox. |
tên | tên hiển thịhiển thị Roblox. |
nickname | tên hiển thịhiển thị của Roblox. |
preferred_username | Tên người dùng Roblox. |
created_at | Thời gian tạo tài khoản Roblox như một thời gian Unix. |
hồ sơ | URL hồ sơ tài khoản Roblox. |
hình ảnh | Hình ảnh bắn đầu avatar Roblox.Có thể là null nếu hình ảnh bắn đầu avatar 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/Hình đầu Avatar/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 các chi tiết về cấu hình Open Cloud, bao gồm một 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ó để tìm thông tin dinamically về các điểm cuối Open Cloud OAuth 2.0 và cấu hình, chẳng hạn như điểm xác nhận, điểm token và bộ cài đặtcông cộng.
Sau khi lấy lại và truy cập Tài liệu Khám phá từ URL 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 minh thông tin, hoặc bạn có thể tạo bản đồ thư viện tùy chỉnh của riêng bạn để tự động hóa dòng công 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ìm kiếm đều tuân theo cùng một sơ đồ như phản hồi ví dụ dưới đây.
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/ashboard/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"
]
}