Bu belge, OAuth 2.0 yetkilendirme kod akışını uygulamak için aradığınız son noktaları ve uygulamalarınızda doğrulama gerçekleştirmek için diğer yararlı son noktaları tanımlar.
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
Otorizasyon
GET v1/authorize
Kullanıcıdan Roblox hesapdoğrulamak için izin alır.Belirtilen parametrelerle oluşturulmuş geçerli bir yetkilendirme URL'si bekler.Bu uç nokta PKCE yetkilendirmesini destekler.
Sorgu değerleri
İsim | Açıklama | Gerekli | Örnek |
---|---|---|---|
client_id | Uygulamanın müşteri ID'si. | evet | 816547628409595165403873012 |
redirect_uri | Kullanıcıların yetkilendirme akışı tamamlandıktan sonra yönlendirileceği URL. | evet | https://www.roblox.com/example-redirect |
alanı | İstediğiniz alanlar, boşlukla ayrılmış.Bir kimlik jetonu almak için openid alanını kullanın.Daha fazla kullanıcı bilgisi almak için openid ve profile alanlarını kullanın. | evet | openid profile |
response_type | Uygulamanın geri vermek istediği krediler.Varsayılan, yetkilendirme kodu verme yaz. | evet | none , code |
uyarı | Kullanıcılara hangi doğrulama ve onay sayfalarının gösterileceğini belirtir.Üçüncü taraf uygulamaları için bazı ekranlar gereklidir ve atlanamaz. | no | none , login , consent , select_account |
nonce | Token'ı istemciyle bağlayan kriptografik sayı. | hayır | <random_value_1> |
durum | Karşı site istek sahteciliğini engelleyen, zararlı bir saldırı türü olan opak bir değerİzin verildikten sonra uygulamaya geri gönderildi. | no | <app-provided-opaque-value> |
code_challenge | Sonuçlanan code_challenge_method dize, code_verifier 'ye uygulanması ile. | no | Base64-URL-kodlanmış dize |
code_challenge_method | code_verifier 'a uygulanan işlev. | hayır | S256 |
İstek
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
Yanıt
Bu uç noktaya çağrıldıktan sonra, kullanıcı bir code sorgu parametresinde belirtilen yeniden yönlendirme URL'sine yönlendirilir ve yetkilendirme koduyla yetkilendirilir.Yetkilendirme kodu:
- Bir dakikalık ömürü vardır.
- Sadece bir kez kullanılabilir.
- Bir kez kullanıldıktan sonra geçersizdir.
Jeton takas
APİ'lere erişmek için jeton almak için, bir dizi gizli token için bir izin kodu değiştirin.Tüm token uç noktaları iki tür müşteri doğrulamasını destekler:
- Bir yetkilendirme başlığıyla HTTP temel doğrulama şeması: Authorization: Basic Base64 encoded(<client_id>:<client_secret>) .
- İstek gövdesindeki müşteri kimliği ve gizem parametre olarak.
Aşağıdaki liste, bu uç noktadan aldığınız çeşitli jetonları tanımlar.
Erişim jetonu - Korunan Roblox kaynaklarına erişmek için üçüncü taraf bir uygulama için yaratıcı veya kullanıcıdan gelen yetkiyi temsil eder.Belirli bir alanı, ömür ve diğer erişim özelliklerini tanımlayan bir dize.Roblox yetkilendirme sunucusu bir uygulamaya erişim jetonu verdiğinde, jeton:
- 15 dakika boyunca geçerlidir.
- Sona erene kadar birden çok kez kullanılabilir.
- Bir uygulama kullanıcısı yetkilendirmeyi iptal ederse, sona ermeden önce geçersiz kılınabilir.
Yenileme jetonu - Bir yetkilendirme oturumunu yeniler.Bir uygulama yeniden yükleme jetonunu kullanarak yeni bir dizi jeton elde edebilir, bu da bir erişim jetonu, bir yenileme jetonu ve bir kimlik jetonu içerir.Yenileme jetonu:
- 90 gün boyunca geçerlidir.
- Jetonları yenilemek için sona erene kadar yalnızca bir kez kullanılabilir.
- Bir uygulama kullanıcısı yetkilendirmeyi iptal ederse, sona ermeden önce geçersiz kılınabilir.
Kimlik jetonu - Bir kullanıcının kimliğinin doğrulandığına dair kanıt sağlar.İçeriği talep edilen alanlara bağlıdır ve bir kullanıcının Roblox görüntü adı ve kullanıcı adı dahil olmak üzere temel kullanıcı bilgilerini içerebilir.Kimlik doğrulama amacıyla yalnızca kimlik jetonu ve herhangi bir Roblox kaynağına erişim sağlamaz.
POST v1/token
Bir yetkilendirme kodu ile bir dizi jeton alın.
İstek
(x-www-form-urlencoded)
| Anahtar | Değer | | ---------- | ------------- | ------------------ | | kod | | | kod_verifier | | | yetki_tipi | yetkilendirme_kodu | | müşteri_id | | | müşteri_gizli | | | müşteri_sırrı | | | client_secret |
|
Örnek Jeton İstek Alma İsteği
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'
Yanıt
Örnek Jeton Yanıtı Alma
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token
Yenileme jetonu ile bir dizi jeton alın.
İstek
(x-www-form-urlencoded)
Anahtar | Değer |
---|---|
grant_type | refresh_token |
refresh_token | <refresh_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Örnek Yenileme Jeton İsteği
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'
Yanıt
Örnek Yenileme Jeton İsteği
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token/introspect
Bir jeton hakkında bilgi alın.Jetonun şu anda geçerli olup olmadığını ve henüz süresi dolmadığını doğrular.Stateless doğrulama için yararlı.Eriştiğiniz API bir kaynak gerektirmediğinde veya Assets API gibi belirli jeton iddialarını görmek istediğinizde yalnızca kullanın.
İstek
(x-www-form-urlencoded)
Anahtar | Değer |
---|---|
token | <access_token> , <refresh_token> veya <id_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Örnek Introspect Jeton İsteği
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'
Yanıt
Örnek Introspect Jeton Yanıtı
{
"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
Bir jetonun belirli bir kaynağa erişebildiğinden emin olmak için, kullanıcının izin verdiği kullanıcı kaynaklarının listesini alarak.Bu, devletli doğrulama için yararlıdır.
İstek
(x-www-form-urlencoded)
Anahtar | Değer |
---|---|
token | <access_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Örnek Jeton Kaynakları İsteği Alma İsteği
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'
Yanıt
Değer U içindeki ids , bir alanın yetkilendiren owner tarafından sahip olduğu bir kaynağa erişim verdiğini gösterir.
Örnek Jeton Kaynakları Yanıtı Alma
{
"resource_infos": [
{
"owner": {
"id": "1516563360",
"type": "User"
},
"resources": {
"universe": {
"ids": ["3828411582"]
},
"creator": {
"ids": ["U"]
}
}
}
]
}
POST v1/token/revoke
Verilen yenileme jetonu kullanarak bir yetkilendirme oturumunu iptal edin.
İstek
(x-www-form-urlencoded)
Anahtar | Değer |
---|---|
token | <refresh_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Örnek İptal Jeton İsteği
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'
Yanıt
200 OK boş bir yanıtla
Kullanıcı Bilgisi
GET /v1/userinfo
Roblox kullanıcı kimliğini ve diğer kullanıcı metadatlarını alır.
İstek
Yetkilendirme başlığı : Authorization: Bearer <access_token>Kullanıcı Bilgi İsteği Örneği
curl --location --request GET 'https://apis.roblox.com/oauth/v1/userinfo' \--header 'Authorization: Bearer eyjlflabtfl...4gxqYBG'
Yanıt
Kullanıcıyı benzersiz olarak tanımlamak için sub değerini kullanabilirsiniz.Kullanıcılar Roblox kullanıcı adı ve görünen addeğiştirebilir, bu nedenle onları uygulamanızdaki kullanıcılara referans olarak benzersiz tanımlayıcı olarak kullanmayın.
İddia | Açıklama |
---|---|
sub | Roblox kullanıcısı ID'si. |
ad | Roblox görünen ad. |
takma isim | Roblox görüntü görünen ad. |
tercih edilen_kullanıcı adı | Roblox hesap adı. |
created_at | Roblox hesabının bir Unix tarihi olarak oluşturulma zamanı. |
profil | Roblox hesap profili URL'si. |
resim | Roblox avatar baş atış görüntüsü.Avatar atış görüntüsü henüz oluşturulmadı veya moderasyona tabi tutulmadıysa nulo olabilir. |
Profil Scope'u ile Örnek Kullanıcı
{
"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/{number1}/150/150/AvatarHeadshot/Png"
}
Profil Scope'u olmayan Örnek Kullanıcı
{
"sub": "1516563360"
}
Keşif
OpenID Connect (OIDC) Keşif Dokümanı, desteklenen kimlikle ilgili alanlar ve iddialar dahil Open Cloud yapılandırma detayları hakkında metadat içeren bir JSON belgesidir.Yazarın izin noktası, jeton noktası ve halka açık anahtar ayarlagibi Open Cloud OAuth 2.0 uç noktaları ve yapılandırması hakkında dinamik olarak bilgi keşfedebilirsiniz.
Keşif Dokümanını Discovery doküman URI'sinden aldıktan ve aldıktan sonra, bilgileri doğrulamak için yanıt cevabındaki alanları manuel olarak inceleyebilir veya çalışma akışınızı otomatikleştirmek için yanıt şemasındaki alanlara özel kütüphane haritası oluşturabilirsiniz.
GET .well-known/openid-configuration
Yanıt
Tüm Keşif Belgesi yanıtları aşağıdaki örnek yanıtıyla aynı sхема izler.
Örnek Keşif Doküman Yanıtı
{
"issuer": "https://apis.roblox.com/oauth/",
"authorization_endpoint": "https://api.roblox.com/oauth/v1/authorize",
"token_endpoint": "https://api.roblox.com/oauth/v1/token",
"introspection_endpoint": "https://apis.roblox.com/oauth/v1/token/introspect",
"revocation_endpoint": "https://api.roblox.com/oauth/v1/token/revoke",
"resources_endpoint": "https://api.roblox.com/oauth/v1/token/resources",
"userinfo_endpoint": "https://api.roblox.com/oauth/v1/userinfo",
"jwks_uri": "https://api.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"
]
}