OAuth 2.0 Autentikasi

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

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

  1. Http Basic Authentication Scheme dengan autorisasi header: 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 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"
]
}