Otorisasi OAuth 2.0

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

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/authorize
POST v1/token
POST v1/token/introspect
POST v1/token/resources
POST v1/token/revoke
GET v1/userinfo
GET .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

NamaDeskripsiDiperlukanContoh
client_idID klien aplikasi.ya816547628409595165403873012
redirect_uriURL yang dipindahkan kembali kepada pengguna setelah aliran otorisasi selesai.yahttps://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.yaopenid profile
jenis responsKredensial yang diinginkan oleh aplikasi dikembalikan.Kode default adalah ketikizin kode otorisasi.yanone , code
promptMenyediakan halaman otorisasi dan persetujuan apa yang ditampilkan kepada pengguna.Beberapa layar diperlukan untuk aplikasi pihak ketiga dan tidak dapat dilewati.tidaknone , login , consent , select_account
nonceNomor kriptografis yang mengikat token dengan klien.tidak<random_value_1>
negaraNilai opak yang mencegah penipuan permintaan situs silang, jenis serangan berbahaya.Dikembalikan ke aplikasi setelah otorisasi.tidak<app-provided-opaque-value>
code_challengeKode yang dihasilkan menerapkan code_challenge_method ke code_verifier .tidakBase64-URL-encode string
code_challenge_methodFungsi yang diterapkan ke code_verifier .tidakS256

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:

  1. HTTP Basic Authentication Scheme dengan header otorisasi: Authorization: Basic Base64 encoded(<client_id>:<client_secret>) .
  2. 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)

KeyValue
code<authorization code>
code_verifier<pkce code verifier value>
grant_typeauthorization_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)

KunciNilai
grant_typerefresh_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)

KunciNilai
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)

KunciNilai
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)

KunciNilai
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.

KlaimDeskripsi
subID pengguna Roblox.
namaNama nama displayRoblox.
nama panggilanNama tampilan Roblox.
preferred_usernameNama pengguna Roblox.
created_atWaktu penciptaan akun Roblox sebagai timestamp Unix.
profilURL profil akun Roblox.
gambarFoto 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"
]
}