OAuth 2.0 Kimlik Doğrulaması

*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 belgede, OAuth 2.0 kimlik doğrulama kodu akışını uygulamak için çağırdığınız sonuçların açıklanmasına ek olarak, kimlik doğrulamasını uygulamak için kullanışlı diğer sonuçlar açıklanmıştır.

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

İzin

GET v1/authorize

Roblox hesapoturum açmak için kullanıcının onayını alır. Belirli parametrelerle oluşturulmuş geçerli bir otorasyon URL'sini bekler. Bu nokta başvurusu destekler.

Sorgu parametreleri

İ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ınızı Alınır. Bu, İşlemlerinizin Gizliliğini Korur.

Cevap

Bu noktadan sonra, kullanıcının code sorgu parametresindeki otorizasyon koduyla belirlenen yönlendirme URL'sine yönlendirilmesi sağlanır. Otorizasyon kodu:

  • Bir dakikalık bir ömürü vardır.
  • Sadece bir kez kullanılabilir.
  • Bir kullanımdan sonra geçersiz.

Jeton Değiştirici

API'lere erişmek için jeton almak için, bir dizi gizli jeton için bir katılma kodu değiştirin. Tüm jeton uç noktaları iki tür klişbirliği destekler:

  1. İzin verici bir başlığı olan HTTP Temel Kimlik Doğrulama Scheme: Authorization: Basic Base64 encoded(<client_id>:<client_secret>) .
  2. İstek bedenindeki istemci kimliği ve gizem kaynağı parametre olarak.

Aşağıdaki liste, bu uç noktanından aldığınız çeşitli jetonları açıklar.

  • Erişim Simgesi - Bir üçüncü parti uygulamasının korumalı kaynaklarına erişmesi için bir yaratıcıdan veya kullanıcıdan bir otorizasyon alır. Bir kapsayıcıyı, ömür boyu ve diğer erişim özelliklerini temsil eden bir yapıdır. Bir Roblox otorizasyon sunucusu bir erişim jetonu oluşturduğunda jeton:

    • 15 dakika geçerlidir.
    • Süresi dolmadan önce birkaç kez kullanılabilir.
    • Uygulama kullanıcısı onayı geri alırsa, bu geçersiz kılınabilir.
  • Yenileme Etiketi - Bir otorizasyon oturumyenilemez. Bir uygulama, yenileme etiketini kullanarak yeni bir set elde edebilir, bu da bir erişim jetonu, bir yenileme jetonu ve bir kimlik jetonu içerir. Bir yenileme jetonu:

    • 90 gün geçerlidir.
    • Jetonları yenilemeden önce sadece bir kez kullanılabilir.
    • Uygulama kullanıcısı onayı geri alırsa, bu geçersiz kılınabilir.
  • Kimlik Jetonu - Bir kullanıcının kimliğinin doğrulandığını kanıtlar. İçeriği, istenen kapsayışa bağlı olarak kullanıcının Roblox görüntü adını ve kullanıcı adını içerebilir. Kimlik jetonu sadece kimlik doğrulama amaçları için sağlar ve Roblox kaynaklarına erişmez.

POST v1/token

Bir yetki koduyla bir dizi jeton elde edin.

İstek

(x-www-form-urlencoded)

| Anahtar | Değer | | -------------- | | | kod | <authorization code> | | code_verifier | <pkce code verifier value> | | grant_type | authorization_code | | client_id | <client_id> | | client_secret | 1> <common

Örnek Token İstek

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ınızı Alınır. Bu, İşlemlerinizin Gizliliğini Korur.

Cevap

Örnek Alınan Jeton Yanıtı

{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}

POST v1/token

Yenileme jetonuyla bir set jetonu 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 Token İstek

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ınızı Alınır. Bu, İşlemlerinizin Gizliliğini Korur.

Cevap

Örnek Yenileme Token İstek

{
"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. Token'ın mevcut olup olmadığını doğrular ve henüz mevcut değilse yeterli değildir. Statik geçerlilik için kullanışlıdır. Sadece API'ye eriştiğinizde kullanın. Sadece token'ın özel taleplerini görmek için kullanın.

İstek

(x-www-form-urlencoded)

| Anahtar | Değer | | -------------- | | | jeton | | <access_token> , <refresh_ token>] veya <id_ token> | | client_id | 2> <client_id>2> | | | client_secret |

Örnek Introspect Token İstek

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ınızı Alınır. Bu, İşlemlerinizin Gizliliğini Korur.

Cevap

Örnek Introspect Token Cevabı

{
"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

Kullanıcının izin verdiği kaynaktara erişebileceğini test etmek için kullanıcının izin verdiği kaynaktar kullanıcının listesini alarak özel bir kaynağa erişip erişemediğini kontrol edin. Bu devlet doğrulaması için yararlıdır.

İstek

(x-www-form-urlencoded)

| Anahtar | Değer | | -------------- | | | jeton | <access_token> | | client_id | <client_id> | | client_secret | <client_secret> |

Örnek Almak İçin Token Kaynağı İstek

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ınızı Alınır. Bu, İşlemlerinizin Gizliliğini Korur.

Cevap

Değer U``ids owner 1> erişim1> ile bir kaynağa erişim sağlandığını gösterir.

Örnek Alınır Token Kaynakları Yanıtı

{
"resource_infos": [
{
"owner": {
"id": "1516563360",
"type": "User"
},
"resources": {
"universe": {
"ids": ["3828411582"]
},
"creator": {
"ids": ["U"]
}
}
}
]
}

POST v1/token/revoke

Sunulan yenileme jetonu kullanarak bir otorizasyon seansını geri al.

İstek

(x-www-form-urlencoded)

| Anahtar | Değer | | -------------- | | | jeton | <refresh_token> | | kli_id | <client_id> | | kli_gizli | <client_secret> |

Örnek İptal Token İstek

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ınızı Alınır. Bu, İşlemlerinizin Gizliliğini Korur.

Cevap

200 OK ile boş bir yanıt

Kullanıcı Bilgisi

GET /v1/userinfo

Roblox kullanıcı ID'sini ve diğer kullanıcı metadatasını alır.

İstek

Yetkilendirme başlığı : Authorization: Bearer <access_token>

Örnek Get User Info Request

curl --location --request GET 'https://apis.roblox.com/oauth/v1/userinfo' \
--header 'Authorization: Bearer eyjlflabtfl...4gxqYBG'

Yanıtınızı Alınır. Bu, İşlemlerinizin Gizliliğini Korur.

Cevap

Kullanıcıyı eşsiz olarak tanımlamak için sub değerini kullanabilirsiniz. Kullanıcılar Roblox kullanıcı adını ve görüntü adını değiştirebilir, bu yüzden onları uygulamanızdaki kullanıcılar için benzersiz kimlik olarak kullanmayın.

| Al | Açıklama | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

Profil Kapsülü Olan Kullanıcı Örneği

{
"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"
}
Profil Yoklu Kullanıcı Örneği

{
"sub": "1516563360"
}

Keşif

Açık Kimlik Doğrulama (OIDC) DiscoveryDocument, OpenCloud yapılandırmasıyla ilgili metadatolar içeren bir JSON belgesidir, bir liste gibi kimlik ilişkili alanları ve iddiaları destekleyen. Onu kullanarak, OpenCloud OAuth 2.0 uç noktaları ve yapılandırmasını, yani otoritezasyon noktası, jeton noktası ve halka anahtarı ayarlagibi,

Kaynağı Discovery belgesi URL'inden Discovery belgesi alındıktan sonra, verileri doğrulamak için alanları el動的 olarak inceleyebilirsiniz veya kendi özel kütüphane haritasını yanıt başlığına oluşturabilirsiniz.

GET .well-known/openid-configuration

Yanıtınızı Alınır. Bu, İşlemlerinizin Gizliliğini Korur.

Cevap

Tüm Keşif Dokümanı yanıtları aşağıdaki örnek yanıtındaki aynı schema'yı izler.

Örnek Keşif Dokümanı Yanıtı

{
"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/ashboard/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"
]
}