การตรวจสอบสิทธิ์ OAuth 2.0

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

เอกสารนี้อธิบายถึง API ที่คุณเรียกใช้เพื่อดำเนินการตามกระบวนการอนุญาต OAuth 2.0 รวมถึง API อื่น ๆ ที่มีประโยชน์สำหรับการดำเนินการตรวจสอบสิทธิ์ในแอปของคุณ

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

การอนุญาต

GET v1/authorize

รับการอนุญาตจากผู้ใช้ในการตรวจสอบสิทธิ์ด้วยบัญชี Roblox ของพวกเขา คาดหวังว่า URL การอนุญาตที่ถูกต้องจะถูกสร้างขึ้นด้วยพารามิเตอร์ที่กำหนด ฟีเจอร์นี้สนับสนุนการอนุญาตแบบ PKCE

พารามิเตอร์ Query

ชื่อคำอธิบายจำเป็นตัวอย่าง
client_idรหัสประจำตัวของแอปใช่816547628409595165403873012
redirect_uriURL ที่ผู้ใช้ถูกเปลี่ยนเส้นทางกลับไปหลังจากเสร็จสิ้นกระบวนการอนุญาตใช่`https://www.roblox.com/example-redirect``
scopeสโคปที่ร้องขอ แบ่งด้วยช่องว่าง ใช้สโคป openid เพื่อรับ ID token ใช้สโคป openid และ profile เพื่อขอข้อมูลผู้ใช้เพิ่มเติมใช่openid profile
response_typeข้อมูลรับรองที่แอปต้องการให้ส่งกลับ ค่าปกติคือประเภทการให้สิทธิ์โค้ดใช่none, code
promptระบุหน้าการตรวจสอบสิทธิ์และการเห็นชอบที่แสดงให้ผู้ใช้ สกรีนบางหน้าจำเป็นสำหรับแอปของบุคคลที่สามและไม่สามารถข้ามได้ไม่จำเป็นnone, login, consent, select_account
nonceหมายเลขเข้ารหัสที่เชื่อมโยงโทเค็นกับไคลเอนต์ไม่จำเป็น<random_value_1>
stateค่าที่ไม่โปร่งใสซึ่งป้องกันการโจมตีข้ามไซต์ ค่าประเภทหนึ่งของการโจมตีที่เป็นอันตราย ส่งกลับไปยังแอปหลังจากการอนุญาตไม่จำเป็น<app-provided-opaque-value>
code_challengeสตริงที่เกิดขึ้นจากการใช้ code_challenge_method กับ code_verifierไม่จำเป็นสตริงเข้ารหัสในรูปแบบ Base64-URL
code_challenge_methodฟังก์ชันที่ถูกนำไปใช้กับ code_verifierไม่จำเป็นS256

คำขอ

ตัวอย่างคำขอในการเปลี่ยนเส้นทางไปยังกระบวนการอนุญาต

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

การตอบสนอง

หลังจากเรียก API นี้ ผู้ใช้จะถูกเปลี่ยนเส้นทางไปยัง URL ที่ระบุโดยมีรหัสการอนุญาตอยู่ในพารามิเตอร์ query code รหัสการอนุญาต:

  • มีอายุใช้งานหนึ่งนาที
  • สามารถนำไปใช้ได้เพียงครั้งเดียว
  • จะใช้ไม่ได้หลังจากใช้ครั้งหนึ่ง

การแลกเปลี่ยนโทเค็น

เพื่อขอรับโทเค็นเพื่อเข้าถึง API แลกรหัส การอนุญาต สำหรับชุดโทเค็นที่เป็นความลับ โดย API ทุกตัวจะสนับสนุนการตรวจสอบสิทธิ์ของไคลเอนต์สองประเภท:

  1. วิธีการตรวจสอบสิทธิ์แบบ HTTP Basic กับ header การอนุญาต: Authorization: Basic Base64 encoded(<client_id>:<client_secret>).
  2. รหัสประจำตัวของผู้ใช้และรหัสลับในตารางคำขอในฐานะพารามิเตอร์

รายชื่อต่อไปนี้อธิบายถึงโทเค็นที่คุณจะได้รับจาก API นี้

  • Access token - แสดงถึงการอนุญาตจากผู้สร้างหรือผู้ใช้สำหรับ แอปของบุคคลที่สามในการเข้าถึงแหล่งข้อมูลที่ได้รับการคุ้มครองของ Roblox เป็นสตริงที่ระบุถึงสโคปเฉพาะ อายุการใช้งานและคุณลักษณะการเข้าถึงอื่น ๆ เมื่อเซิร์ฟเวอร์การอนุญาต Roblox ออกโทเค็นการเข้าถึงให้กับแอป โทเค็น:

    • ถูกต้องเป็นเวลา 15 นาที
    • สามารถใช้หลายครั้งก่อนที่จะหมดอายุ
    • สามารถถูกเพิกถอนก่อนหมดอายุได้หากผู้ใช้แอปทำการเพิกถอนการอนุญาต
  • Refresh token - รีเฟรชเซสชันการอนุญาต แอปสามารถใช้ refresh token เพื่อขอชุดใหม่ของโทเค็น ซึ่งรวมถึง access token, refresh token และ ID token refresh token:

    • ถูกต้องเป็นเวลา 90 วัน
    • สามารถใช้ได้เพียงครั้งเดียวก่อนจะหมดอายุเพื่อทำให้โทเค็นใหม่
    • สามารถถูกเพิกถอนก่อนที่จะหมดอายุได้หากผู้ใช้แอปทำการเพิกถอนการอนุญาต
  • ID token - ให้หลักฐานว่าตัวตนของผู้ใช้ได้รับการตรวจสอบแล้ว เนื้อหาของมันขึ้นอยู่กับสโคปที่ร้องขอและสามารถมีข้อมูลพื้นฐานเกี่ยวกับผู้ใช้รวมถึงชื่อแสดงและชื่อผู้ใช้ Roblox ID token ใช้เพื่อวัตถุประสงค์ในการตรวจสอบตัวตนเท่านั้นและไม่ให้การเข้าถึงแหล่งข้อมูล Roblox ใด ๆ

POST v1/token

รับชุดโทเค็นด้วยรหัสการอนุญาต

คำขอ

(x-www-form-urlencoded)

คีย์ค่า
code<authorization code>
code_verifier<pkce code verifier value>
grant_typeauthorization_code
client_id<client_id>
client_secret<client_secret>
ตัวอย่างคำขอเพื่อขอโทเค็น

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'

การตอบสนอง

ตัวอย่างการตอบสนองต่อคำขอโทเค็น

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

POST v1/token

รับชุดโทเค็นด้วย refresh token

คำขอ

(x-www-form-urlencoded)

คีย์ค่า
grant_typerefresh_token
refresh_token<refresh_token>
client_id<client_id>
client_secret<client_secret>
ตัวอย่างคำขอรีเฟรชโทเค็น

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'

การตอบสนอง

ตัวอย่างการตอบสนองรีเฟรชโทเค็น

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

POST v1/token/introspect

รับข้อมูลเกี่ยวกับโทเค็น ตรวจสอบว่าโทเค็นนั้นถูกต้องและยังไม่หมดอายุ มีประโยชน์สำหรับการตรวจสอบแบบไม่มีสถานะ ใช้เฉพาะถ้า API ที่คุณเข้าถึงไม่ต้องการแหล่งข้อมูล เช่น แอปพลิเคชัน Assets API หรือหากคุณต้องการเห็นการเรียกร้องเฉพาะของโทเค็น

คำขอ

(x-www-form-urlencoded)

คีย์ค่า
token<access_token>, <refresh_token> หรือ <id_token>
client_id<client_id>
client_secret<client_secret>
ตัวอย่างคำขอเพื่อดูลักษณะโทเค็น

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'

การตอบสนอง

ตัวอย่างการตอบสนองดูลักษณะโทเค็น

{
"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

ตรวจสอบว่าโทเค็นสามารถเข้าถึงแหล่งข้อมูลเฉพาะได้ไหมโดยการรับรายการแหล่งข้อมูลของผู้ใช้ที่ผู้ใช้ได้ให้อนุญาต นี่มีประโยชน์สำหรับการตรวจสอบแบบมีสถานะ

คำขอ

(x-www-form-urlencoded)

คีย์ค่า
token<access_token>
client_id<client_id>
client_secret<client_secret>
ตัวอย่างคำขอเพื่อรับทรัพยากรของโทเค็น

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'

การตอบสนอง

ค่าที่อยู่ใน ids ซึ่งระบุว่ามีสโคปที่ได้รับการอนุญาตให้เข้าถึงทรัพยากรที่เจ้าของการอนุญาต

ตัวอย่างการตอบสนองเพื่อรับทรัพยากรของโทเค็น

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

POST v1/token/revoke

เพิกถอนเซสชันการอนุญาตโดยใช้ refresh token ที่ให้มา

คำขอ

(x-www-form-urlencoded)

คีย์ค่า
token<refresh_token>
client_id<client_id>
client_secret<client_secret>
ตัวอย่างคำขอเพิกถอนโทเค็น

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'

การตอบสนอง

200 OK กับการตอบสนองที่ว่างเปล่า

ข้อมูลผู้ใช้

GET /v1/userinfo

รับ ID ผู้ใช้ Roblox และข้อมูลเมตาดาต้าอื่น ๆ ของผู้ใช้

คำขอ

Authorization header: Authorization: Bearer <access_token>

ตัวอย่างคำขอเพื่อรับข้อมูลผู้ใช้

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

การตอบสนอง

คุณสามารถใช้ค่า sub เพื่อระบุผู้ใช้โดยเฉพาะ ผู้ใช้สามารถเปลี่ยนชื่อผู้ใช้และชื่อแสดงของ Roblox ของพวกเขาได้ดังนั้นจึงอย่าใช้พวกเขาเป็นตัวระบุเฉพาะในการอ้างถึงผู้ใช้ในแอปของคุณ

Claimคำอธิบาย
subID ผู้ใช้ Roblox
nameชื่อแสดงของ Roblox
nicknameชื่อแสดงของ Roblox
preferred_usernameชื่อผู้ใช้ Roblox
created_atเวลาที่สร้างบัญชี Roblox ในรูปแบบ timestamp Unix
profileURL โปรไฟล์บัญชี Roblox
pictureรูปภาพโพรไฟล์หัวของ Roblox สามารถเป็นค่า null ได้ถ้ารูปภาพโพรไฟล์หัวไม่ถูกสร้างขึ้นหรือถูกปรับแต่งแล้ว
ตัวอย่างผู้ใช้ที่มีการใช้สโคปโปรไฟล์

{
"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"
}
ตัวอย่างผู้ใช้ที่ไม่มีการใช้สโคปโปรไฟล์

{
"sub": "1516563360"
}

การค้นพบ

เอกสารการค้นพบ OpenID Connect (OIDC) เป็นเอกสาร JSON ที่ มีข้อมูลเมตาเกี่ยวกับรายละเอียดการกำหนดค่าของ Open Cloud รวมถึงรายการ สโคปและคำเรียกร้องที่เกี่ยวข้องกับการระบุตนตนที่ได้รับการสนับสนุน คุณสามารถใช้มันเพื่อค้นพบข้อมูลอย่าง ไดนามิกเกี่ยวกับ API ของ Open Cloud OAuth 2.0 และ การกำหนดค่า เช่น จุดเชื่อมต่อการอนุญาต จุดเชื่อมต่อโทเค็น และชุดกุญแจสาธารณะ

หลังจากเรียกข้อมูลเอกสารการค้นพบจาก URI ของเอกสารการค้นพบแล้ว คุณสามารถตรวจสอบฟิลด์ในการตอบสนองเพื่อยืนยันข้อมูล หรือคุณสามารถสร้างไลบรารีแบบกำหนดเองของคุณที่แมพฟิลด์ใน schema การตอบสนองเพื่อทำให้การทำงานอัตโนมัติ

GET .well-known/openid-configuration

การตอบสนอง

เอกสารการค้นพบทั้งหมดจะมีรูปแบบเดียวกันกับการตอบสนองตัวอย่างต่อไปนี้

ตัวอย่างการตอบสนองเอกสารการค้นพบ

{
"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, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ