Dokumen ini menggambarkan akhiran yang Anda hubungi untuk menerapkan aliran kode otorisasi OAuth 2.0, serta akhiran lain yang berguna untuk menerapkan otentikasi 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
Otorisasi
GET v1/authorize
Mendapatkan otorisasi dari pengguna untuk berautentikasi dengan akun Roblox mereka.Mengharapkan URL otorisasi yang valid dibangun dengan parameter yang ditentukan. endpoint ini mendukung otorisasi PKCE.
Parameter pencarian
Nama | Deskripsi | Diperlukan | Contoh |
---|---|---|---|
client_id | ID klien aplikasi. | ya | 816547628409595165403873012 |
redirect_uri | URL yang dipindahkan kembali kepada pengguna setelah aliran otorisasi selesai. | ya | https://www.roblox.com/example-redirect |
cakupan yang diminta, dibatasi ruang.Gunakan scope openid untuk menerima token ID.Gunakan scope openid dan profile untuk mendapatkan lebih banyak informasi pengguna. | ya | openid profile | |
jenis respons | Kredensial yang diinginkan oleh aplikasi dikembalikan.Kode default adalah ketikizin kode otorisasi. | ya | none , code |
prompt | Menyediakan halaman otorisasi dan persetujuan apa yang ditampilkan kepada pengguna.Beberapa layar diperlukan untuk aplikasi pihak ketiga dan tidak dapat dilewati. | tidak | none , login , consent , select_account |
nonce | Nomor kriptografis yang mengikat token dengan klien. | tidak | <random_value_1> |
negara | Nilai opak yang mencegah penipuan permintaan situs silang, jenis serangan berbahaya.Dikembalikan ke aplikasi setelah otorisasi. | tidak | <app-provided-opaque-value> |
code_challenge | Kode yang dihasilkan menerapkan code_challenge_method ke code_verifier . | tidak | Base64-URL-encode string |
code_challenge_method | Fungsi yang diterapkan ke code_verifier . | tidak | S256 |
Meminta
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
Respon
Setelah memanggil endpoint ini, pengguna diarahkan ke URL redirect yang ditentukan dengan kode otorisasi dalam parameter pencarian code .Kode otorisasi:
- Memiliki masa hidup satu menit.
- Hanya dapat ditebus sekali.
- Tidak valid setelah satu penggunaan.
Penukaran pertukaran
Untuk mendapatkan token untuk mengakses API, tukar kode otorisasi untuk sekelompok token rahasia untuk sekelompok token rahasia.Semua titik akhir token mendukung dua jenis autentikasi klien:
- HTTP Basic Authentication Scheme dengan header otorisasi: 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 titik akhir ini.
Token akses - Mewakili otorisasi dari pembuat atau pengguna untuk aplikasi pihak ketiga untuk mengakses sumber Roblox terlindungi mereka.Ini adalah string yang menunjukkan scope, waktu hidup, dan atribut akses lainnya tertentu.Setelah server otorisasi Roblox mengeluarkan token akses ke aplikasi, token:
- Berlaku selama 15 menit.
- Dapat digunakan beberapa kali sebelum kedaluwarsa.
- Dapat dihapuskan sebelum kedaluwarsa jika pengguna aplikasi menarik kembali otorisasi.
Segarkan token - Menyegarkan sesi otorisasi.Sebuah aplikasi dapat menggunakan token penyegaran untuk mendapatkan set baru token, yang mencakup token akses, token penyegaran, dan token ID.Token penyegaran:
- Berlaku selama 90 hari.
- Hanya dapat digunakan sekali sebelum kadaluarsa untuk menyegarkan token.
- Dapat dihapuskan sebelum kedaluwarsa jika pengguna aplikasi menarik kembali otorisasi.
Token ID - Memberikan bukti bahwa identitas pengguna telah diotentikasi.Kontennya tergantung pada scope yang diminta dan dapat berisi informasi pengguna dasar, termasuk nama tampilan Roblox pengguna dan nama pengguna.Token ID hanya untuk tujuan verifikasi identitas dan tidak memberikan akses ke sumber daya Roblox mana pun.
POST v1/token
Dapatkan serangkaian token dengan kode otorisasi.
Meminta
(x-www-form-urlencoded)
Key | Value |
---|---|
code | <authorization code> |
code_verifier | <pkce code verifier value> |
grant_type | authorization_code |
client_id | <client_id> |
client_secret | <client_secret> |
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'
Respon
Contoh Dapatkan Tanggapan Token
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token
Dapatkan serangkaian token dengan token refresh.
Meminta
(x-www-form-urlencoded)
Kunci | Nilai |
---|---|
grant_type | refresh_token |
refresh_token | <refresh_token> |
klien_id | <client_id> |
klien_secret | <client_secret> |
Contoh Permintaan Token Penyegaran Contoh
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'
Respon
Contoh Permintaan Token Penyegaran Contoh
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token/introspect
Terima informasi tentang token.Memeriksa apakah token saat ini valid dan belum kedaluwarsa.Berguna untuk validasi tanpa status.Gunakan hanya jika API yang Anda akses tidak memerlukan sumber daya, seperti API Aset, atau jika Anda hanya ingin melihat klaim khusus dari token.
Meminta
(x-www-form-urlencoded)
Kunci | Nilai |
---|---|
token | <access_token> , <refresh_token> atau <id_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Permintaan Token Introspeksi Contoh
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'
Respon
Contoh Respon Token Introspeksi Contoh
{
"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 oleh pengguna.Ini berguna untuk validasi berbasis negara.
Meminta
(x-www-form-urlencoded)
Kunci | Nilai |
---|---|
token | <access_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Contoh Dapatkan Permintaan Sumber 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'
Respon
Nilai U di ids menunjukkan bahwa scope telah memberikan akses ke sumber daya yang dimiliki oleh pengotorizasi owner .
Contoh Dapatkan Sumber Token Respon
{
"resource_infos": [
{
"owner": {
"id": "1516563360",
"type": "User"
},
"resources": {
"universe": {
"ids": ["3828411582"]
},
"creator": {
"ids": ["U"]
}
}
}
]
}
POST v1/token/revoke
Batalkan sesi otorisasi menggunakan token penyegaran yang disediakan.
Meminta
(x-www-form-urlencoded)
Kunci | Nilai |
---|---|
token | <refresh_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Contoh Permintaan Penarikan Token Batalkan
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'
Respon
200 OK dengan respons kosong
Informasi Pengguna
GET /v1/userinfo
Mendapatkan ID pengguna Roblox dan metadata pengguna lainnya.
Meminta
Kepala otorisasi : Authorization: Bearer <access_token>Contoh Permintaan Informasi Pengguna Contoh
curl --location --request GET 'https://apis.roblox.com/oauth/v1/userinfo' \--header 'Authorization: Bearer eyjlflabtfl...4gxqYBG'
Respon
Anda dapat menggunakan nilai sub untuk mengidentifikasi pengguna secara unik.Pengguna dapat mengubah nama displaypengguna dan nama tampilan Roblox mereka, jadi jangan gunakan mereka sebagai identifikator unik untuk merujuk pada pengguna di aplikasi Anda.
Klaim | Deskripsi |
---|---|
sub | ID pengguna Roblox. |
nama | Nama nama displayRoblox. |
nama panggilan | Nama tampilan Roblox. |
preferred_username | Nama pengguna Roblox. |
created_at | Waktu penciptaan akun Roblox sebagai timestamp Unix. |
profil | URL profil akun Roblox. |
gambar | Foto kepala avatar Roblox.Dapat nol jika gambar tembakan kepala avatar belum dihasilkan atau telah dimoderasi. |
Contoh Pengguna dengan Skop Profil
{
"sub": "1516563360",
"name": "exampleuser",
"nickname": "exampleuser",
"preferred_username": "exampleuser",
"created_at": 1584682495,
"profile": "https://www.roblox.com/pengguna/1516563360/profil",
"picture": "https://tr.rbxcdn.com/03dc2a9abe7b1aacaaf93ea46d5c0646/150/150/AvatarHeadshot/Png"
}
Contoh Pengguna tanpa Skop Profil
{
"sub": "1516563360"
}
Pencarian
Dokumen Penemuan OpenID Connect (OIDC) adalah dokumen JSON yang berisi metadata tentang rincian konfigurasi Open Cloud, termasuk daftar scope dan klaim terkait identitas yang didukung.Anda dapat menggunakannya untuk menemukan informasi secara dinamis tentang akhiran dan konfigurasi Open Cloud OAuth 2.0, seperti titik otorisasi, akhiran token, dan aturkunci publik.
Setelah mengambil dan mengambil Dokumen Penemuan dari URI dokumen Penemuan, Anda dapat secara manual memeriksa bidang di respons untuk memverifikasi informasi, atau Anda dapat membuat peta library khusus Anda sendiri untuk bidang di skema respons untuk mengotomatisasi alur kerja Anda.
GET .well-known/openid-configuration
Respon
Semua respons Dokumen Penemuan mengikuti skema yang sama dengan respons contoh berikut.
Contoh Respon Dokumen Penemuan Contoh
{
"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"
]
}