Dokumen ini menjelaskan akhir pengguna yang Anda panggil untuk menerapkan kode otorisasi OAuth 2.0, serta beberapa akhir pengguna yang berguna untuk menerapkan autentikasi di aplikasi Anda.
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
Autentikasi
GET v1/authorize
Mendapatkan otorisasi dari pengguna untuk mengautentikasi dengan akun Roblox mereka. Harapkan URL otorisasi yang valid dibangun dengan parameter yang ditentukan. Endpoint ini mendukung otorisasi PKCE.
Parameter pencarian
Name
Permintaan
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
Balasan
Setelah menyebutkan endpoints ini, pengguna dikirim ke URL redirect tertentu dengan kode otorisasi dalam code parameter pencarian. Kode otorisasi:
- Memiliki masa hidup satu menit.
- Hanya dapat ditebus sekali.
- Tidak valid setelah satu penggunaan.
Pertukaran Token
Untuk mendapatkan token untuk mengakses API, tukar kode autorisasi untuk set serangkaian token rahasia. Semua ujung token mendukung dua jenis autentikasi klien:
- Http Basic Authentication Scheme dengan autorisasi header: Authorization: Basic Base64 encoded(<client_id>:<client_secret>) .
- ID klien dan rahasia dalam tubuh permintaan sebagai parameter.
Daftar berikut menjelaskan berbagai token yang Anda terima dari ujung ini.
Token Akses - M mewakili otorisasi dari pembuat atau pengguna untuk aplikasi pihak ketiga untuk mengakses sumber daya Roblox mereka yang dilindungi. Ini adalah string yang menunjukkan scope, lifetime, dan other access attributes. Setelah server otorisasi Roblox mengeluarkan token akses, token:
- Berlaku selama 15 menit.
- Dapat digunakan berkali-kali sebelum kadaluarsa.
- Dapat dibatalkan sebelum kadaluarsa jika pengguna aplikasi menarik kembali otorisasi.
Token Segarkan - Segarkan sesi autorisasi. Sebuah aplikasi dapat menggunakan token segarkan untuk mendapatkan set baru token, yang termasuk token akses, token segarkan, dan token ID. Token segarkan:
- Berlaku selama 90 hari.
- Hanya dapat digunakan sekali sebelum kadaluarsa untuk menyegarkan token.
- Dapat dibatalkan sebelum kadaluarsa jika pengguna aplikasi menarik kembali otorisasi.
Token ID - Memberikan bukti bahwa identitas pengguna telah d認證. Kontennya bergantung pada scope yang diminta dan dapat berisi informasi pengguna dasar, termasuk nama layar pengguna dan nama pengguna Roblox. Token ID hanya digunakan untuk tujuan autentikasi identitas dan tidak memberikan akses ke sumber daya Roblox.
POST v1/token
Dapatkan set token dengan kode autorisasi.
Permintaan
(x-www-form-urlencoded)
| Kunci |Nilai | | -------------- | ---------------- | | kode | <authorization code> | | kode_verifier | <pkce code verifier value> | | grant_type | autorisasi_kode | | client_id | <client_id> | | client_secret | 1> <客
Contoh Dapatkan Permintaan 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'
Balasan
Contoh Dapatkan Tanggapan Token
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token
Dapatkan set token dengan token penyegarkan.
Permintaan
(x-www-form-urlencoded)
| Key | Value | | -------------- | ----------------- | | grant_type | refresh_token | | refresh_token | <refresh_token> | | client_id | <client_id> | | client_secret | <client_secret> |
Contoh Permintaan Token Pembaruan
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'
Balasan
Contoh Permintaan Token Pembaruan
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token/introspect
Terima informasi tentang token. Verifikasi apakah token saat ini valid dan belum kedaluwarsa. Berguna untuk validasi stateless. Gunakan hanya jika API yang Anda akses tidak memerlukan sumber daya, seperti Assets API, atau jika Anda hanya ingin melihat klaim spesifik token.
Permintaan
(x-www-form-urlencoded)
| Kunci |Nilai | | | -------------- | | | token | <access_token> , <refresh_token> atau <id_token> | | klien_id | 1> <klien_id>1> |
Contoh Permintaan Token Introspect
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'
Balasan
Contoh Tanggapan 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
Periksa apakah token dapat mengakses sumber daya tertentu dengan mendapatkan daftar sumber daya pengguna yang diberi izin. Ini berguna untuk validasi berbasis negara.
Permintaan
(x-www-form-urlencoded)
| Kunci |Nilai | | -------------- | | | token | <access_token> | | client_id | <client_id> | | client_secret | <client_secret> |
Contoh Dapatkan Token Sumber Daya Permintaan
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'
Balasan
Nilai U dalam ids menunjukkan bahwa scope telah diberi akses ke sumber daya yang dimiliki oleh owner yang berwenang.
Contoh Dapatkan Tanggapan Sumber Daya Token
{
"resource_infos": [
{
"owner": {
"id": "1516563360",
"type": "User"
},
"resources": {
"universe": {
"ids": ["3828411582"]
},
"creator": {
"ids": ["U"]
}
}
}
]
}
POST v1/token/revoke
Batalkan sesi autorisasi menggunakan token penyegaran yang disediakan.
Permintaan
(x-www-form-urlencoded)
| Tombol |Nilai | | -------------- | | token | <refresh_token> | | klien_id | <client_id> | | rahasia klien | <client_secret> |
Contoh Permintaan Token Revoke
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'
Balasan
200 OK dengan respons kosong
Informasi Pengguna
GET /v1/userinfo
Mendapatkan ID pengguna Roblox dan metrik pengguna lainnya.
Permintaan
Authorization header : Authorization: Bearer <access_token>Contoh Dapatkan Permintaan Info Pengguna
curl --location --request GET 'https://apis.roblox.com/oauth/v1/userinfo' \--header 'Authorization: Bearer eyjlflabtfl...4gxqYBG'
Balasan
Anda dapat menggunakan nilai sub untuk mengidentifikasi pengguna secara unik. Pengguna dapat mengubah nama pengguna Roblox mereka dan nama display, jadi jangan menggunakannya sebagai identifikasi unik untuk mengacu pada pengguna di aplikasi Anda.
| Klaim | Deskripsi | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
Pengguna Contoh dengan Profile Scope
{
"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"
}
Contoh Pengguna Tanpa Skala Profil
{
"sub": "1516563360"
}
Penemuan
Dokumen Penemuan OpenID Connect (OIDC) adalah dokumen JSON yang berisi metadata tentang detail konfigurasi Open Cloud, termasuk daftar scope dan klaim yang didukung. Anda dapat menggunakannya untuk menemukan informasi tentang Open Cloud OAuth 2.0 endpoints dan konfigurasi, seperti autorisasi endpoint, token endpoint, dan aturkunci publik.
Setelah mengambil dan mengambil DiscoveryDocument dari Discovery dokumen UI, Anda dapat secara manual memeriksa lapangan dalam respons untuk mengkonfirmasi informasi, atau Anda dapat menciptakan peta perpustakaan khusus Anda kepada lapangan dalam schema respons untuk otomatisasi proses kerja Anda.
GET .well-known/openid-configuration
Balasan
Semua jawaban Dokumen Penemuan mengikuti schema yang sama dengan jawaban contoh berikut.
Contoh Tanggapan Dokumen Penemuan
{
"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/資源",
"userinfo_endpoint": "https://apis.roblox.com/oauth/v1/userinfo",
"jwks_uri": "https://apis.roblox.com/oauth/v1/certs",
"registration_endpoint": "https://create.roblox.com/dasher/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"
]
}