OAuth 2.0 doğrulama

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

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

İsimAçıklamaGerekliÖrnek
client_idUygulamanın müşteri ID'si.evet816547628409595165403873012
redirect_uriKullanıcıların yetkilendirme akışı tamamlandıktan sonra yönlendirileceği URL.evethttps://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.evetopenid profile
response_typeUygulamanın geri vermek istediği krediler.Varsayılan, yetkilendirme kodu verme yaz.evetnone , 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.nonone , login , consent , select_account
nonceToken'ı istemciyle bağlayan kriptografik sayı.hayır<random_value_1>
durumKarşı 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_challengeSonuçlanan code_challenge_method dize, code_verifier 'ye uygulanması ile.noBase64-URL-kodlanmış dize
code_challenge_methodcode_verifier 'a uygulanan işlev.hayırS256

İ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:

  1. Bir yetkilendirme başlığıyla HTTP temel doğrulama şeması: Authorization: Basic Base64 encoded(<client_id>:<client_secret>) .
  2. İ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)

AnahtarDeğer
grant_typerefresh_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)

AnahtarDeğ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)

AnahtarDeğ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)

AnahtarDeğ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.

İddiaAçıklama
subRoblox kullanıcısı ID'si.
adRoblox görünen ad.
takma isimRoblox görüntü görünen ad.
tercih edilen_kullanıcı adıRoblox hesap adı.
created_atRoblox hesabının bir Unix tarihi olarak oluşturulma zamanı.
profilRoblox hesap profili URL'si.
resimRoblox 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"
]
}