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 dòng chảy mã thẩm quyền OAuth 2.0, cũng như các điểm cuối khác có ích cho việc thực hiện xác thực hiện xác thực hiện xác thực hiện xác thực hiện xác thực hiện xác thực hiện xác thực hiện xác thực hiện xác thực hiện xác thực hiện xác th

Base URL

https://apis.roblox.com/oauth
Endpoints

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

Authentification

GET v1/authorize

Nhận được thẩm quyền từ người dùng để xác thực hồ tài khoảnRoblox của họ.期待一个有效的 thẩm quyền URL được xây dựng với các tham số được quy định. This endpoint supports PKCE authorization.

Các biến trong truy vấn

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 đích đã được chỉ định với mã đăng nhập ở một code điều kiện. Mã đăng nhập:

  • Có một cuộc sống lâu dài của một phút.
  • Chỉ có thể đổi một lần.
  • Không hợp lệ sau một lần sử dụng.

Trao đổi token

Để nhận xuất khẩu một set các token để truy cập các API, trao đổi một mã autorization cho một set các token bí mật. Tất cả các điểm xuất khẩu token hỗ trợ hai loại đăng nhập khẩu khách hàng:

  1. HTTP Basic Authentication Scheme with an authorization header: Authorization: Basic Base64 encoded(<client_id>:<client_secret>) .
  2. ID khách hàng và bí mật trong thân bản yêu cầu như các biến độ.

Danh sách sau đây mô tả các loại token bạn nhận từ các cửa hàng này.

  • Token truy cập - Đại diện quyền truy cập từ một nhà sáng 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 vệ của họ. Nó là một chuỗi đại diện cho một phạm vi, thời gian thực tế và các thuộc tính quyền truy cập

    • Hợp lệ trong vòng 15 phút.
    • Có thể được sử dụng nhiều lần trước khi hết hạn.
    • Có thể bị huỷ bỏ trước khi hết hạn nếu một người dùng ứng dụng thu hồi quyền truy cập.
  • Token cập nhật - Làm mới một phiên đăng nhập. Một ứng dụng có thể sử dụng token cập nhật để nhận một bộ nhận mới, bao gồm một thẻ truy cập, một thẻ làm mới và một thẻ nhận dạng. Một token cập nhật:

    • Hợp lệ trong 90 ngày.
    • Chỉ có thể được sử dụng một lần trước khi hết hạn để cập nhật xu.
    • Có thể bị huỷ bỏ trước khi hết hạn nếu một người dùng ứng dụng thu hồi quyền truy cập.
  • Token ID - Cung cấp bằng chứng rằng danh tính của một người đã được xác minh. Nội dung của nó phụ thuộc vào các hàng tương ứng được yêu cầu và có thể chứa các 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 ngư

POST v1/token

Lấy một bộ dấu hiệu với một mã xác thực.

Yêu cầu

(x-www-form-urlencoded)

| Key | Value | | -------------- | đăng nhập | | code | <authorization code> | | code_verifier | <pkce code verifier value> | | grant_type | authorization_code | | client_id | <client_id> | | client_secret | 1> <

Yêu cầu Token Có thể lấy

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ụ: để lấy một câu trả lời Token

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

POST v1/token

Lấy một loạt các xu với một xu làm mới.

Yêu cầu

(x-www-form-urlencoded)

| Key | Value | | -------------- | đăng nhập | | grant_type | refresh_token | | refresh_ token | <refresh_token> | | client_id | <client_id> | | client_secret | <client_secret> |

Yêu cầu Token Cập nhật 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 Token Cập nhật 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 apakah token hiện đang hợp lệ và chưa expired yet. Hữu ích cho stateless validation. Sử dụng chỉ nếu API bạn đang truy cập không yêu cầu tài nguyên, chẳng hạn như Assets API, hoặc nếu bạn chỉ muốn xem các tuyên bố cụ thể của token.

Yêu cầu

(x-www-form-urlencoded)

| Key | Value | | | đăng nhập | | token | <access_token> , <refresh_token> hoặc <id_token> | | client_id | 1> <client_id>1> |

Yêu cầu giao dịch token Introspect 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

Trả lời thẻ Introspect Token

{
"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 lấy danh sách nguồn lực lượng mà người dùng đã cho phép không. Điều này hữu ích cho kiểm tra trạng thái.

Yêu cầu

(x-www-form-urlencoded)

| Key | Value | | -------------- | đăng nhập | | token | <access_token> | | client_id | <client_id> | | client_secret | <client_secret> |

Yêu cầu giúp các nguồn lực xây dựng Token

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 khoản trang bị đã được cấp quyền truy cập một nguồn tài nguyên thuộc sở hữu của owner được đề xuất.

Trả lời tài nguyên Token cần thiết

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

POST v1/token/revoke

Huỷ một phiên đăng nhập sử dụng token cập nhật được cung cấp.

Yêu cầu

(x-www-form-urlencoded)

| Key | Value | | -------------- | đối tượng | | token | <refresh_token> | | client_id | <client_id> | | client_secret | <client_secret> |

Yêu cầu thẻ Revoke 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 câu trả lời trống

Thông tin người dùng

GET /v1/userinfo

Lấy ID người dùng Roblox và các thẻ khác của người dùng.

Yêu cầu

Thẩm quyền đầu cuối : Authorization: Bearer <access_token>

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 người dùng một cách độc nhất. Người dùng có thể thay đổi tên người dùng Roblox của họ và tên hiển thị của họ, vì vậy đừng sử dụng chúng như những nhận dạng độc nhất để tham chiếu đến người dùng trên ứng dụngcủa bạn.

| Claim | Description | | đăng nhập | Roblox tên tài khoảnID. | | tên hiển th

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"
}
Người dùng mà không có khoảng cảnh nhàn rỗi

{
"sub": "1516563360"
}

Khám phá

Tài liệu DiscoveryDocument OpenIDConnect (OIDC) là một tài liệu JSON chứa thông tin về cấu hình Open Cloud, bao gồm một danh sách các khoản và tuyên bố hỗ trợ được hỗ trợ. Bạn có thể sử dụng nó để tìm thông tin tạm thời về Open Cloud OAuth 2.0 endpoints và cấu hình, chẳng hạn như đi

Sau khi lấy và tìm kiếm DiscoveryDocument từ DiscoveryDocument URI, bạn có thể kiểm tra các trường trong câu trả lờ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 cho các trường trong câu trả lờ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 câu trả lời của tài liệu khám phá đều tuân theo cùng một trình tư duy như câu trả lời ví dụ dưới đây.

Mẫu phản hồi tài liệu Discovery

{
"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/云端",
"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"
]
}