OAuth 2.0 Uygulama Geliştirme

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

Open Cloud, PKCE olmadan veya olmakla birlikte OAuth 2.0 otorizasyon akışını destekler, bu da müşterilerinizin gizli veya herkese açıkolup olmadığına bağlı olarak.

  • Gizli klişeler web sitesi gibi, kredileri gizli tutabilen uygulamalardır.
  • Herkese Açık Klientler mobil ve web tarayıcı gibi gizli tutmayabilen uygulamalardır.

Tüm客lar için OAuth 2.0 kimlik doğrulama kodu akışını gerektirir ve bunu halka açık klişiler için gerektirir.

Yetkilendirme kodu akışını uygulamak için, uygulamanız aşağıdaki adımları yerine getirir:

  1. Kod doğrulayıcı ve kod meydan okuma oluşturur (sadece PKCE). Bu, isteklerinizde kod gizlisini değil, güvenliği artıran bir meydan okuma olarak bir meydan okuma dahil edebilirsiniz.
  2. Yeterli parametrelerle birlikte yazılımınızın GET istemcisine bir istek gönderin.
  3. İzin çağrısını işleyin. İzin alındıktan sonra, Roblox'tan gelen otorizasyon kodunu yaratımyönlendirme isteğinde belirttiğiniz URL'ye olan URL'ye olan URL'ye olan URL'ye olan URL'ye olan URL'ye olan URL'ye olan URL'ye olan URL'ye olan URL'ye olan URL'ye olan URL'ye olan URL'ye olan URL'ye olan URL'ye olan URL'ye olan URL'ye olan URL'ye olan URL'ye olan URL'ye olan URL'ye olan URL'ye olan URL'ye olan URL'ye olan URL'ye
  4. Bir POST isteği token ucunda otorizasyon koduyla gönderin. Eğer başarılıysanız, API çağrıları yapmak için jetonlara erişim ve yenileme alırsınız.
  5. Erişmek istediğiniz kaynaklara OAuth 2.0 kimlik doğrulamasına dayalı olarak erişim sağlayan herhangi bir Açık Bulut API'sini çağırın.

Aşağıdaki bölümler her adımı daha ayrıntılı olarak açıklar.

Bir Kod Mücadelesi Oluşturulması (Sadece PKCE için)

İzin sürecini başlatmadan önce, bir kod verifikatöründen bir kod meydan okuma oluşturmalısınız. Kod verifikatörünü oluşturmak için programlama dilinizin seçimindeki kütüphaneler veya yerleşik işlevleri kullanabilirsiniz, kod meydan okuma oluşturmak için Base64 kodlama düzenlemesini oluşturmak için kullanılabilir.

Kod verifikatörü oluştururken, üst ve alt harfler (A-Z, a-z), dijital sayılar (0-9), boşluk (-) ve nokta (., üst çizgi (_) ve tırpan (~), minimum 43 karakter ve maksimum 128 karakter uzunluğunda kullanılabilir.

Aşağıdaki örnek, Javascript'i kullanarak bir kod verifikatörü oluşturmak ve SHA-256 hashing algoritmasını kullanarak kod meydan okuma oluşturmak için nasıl kullanılacağını gösteriyor:

Generate Code Challenge

const crypto = require('crypto');
// base64URL encode the verifier and challenge
function base64URLEncode(str) {
return str.toString('base64')
.replace(/\+/g, '-')
.replace(/\//g, '_')
.replace(/=/g, '');
}
// create sha256 hash from code verifier
function sha256(buffer) {
return crypto.createHash('sha256').update(buffer).digest(`base64`);
// create a random code verifier
var code_verifier = base64URLEncode(crypto.randomBytes(32));
// generate a challenge from the code verifier
var code_challenge = base64URLEncode(sha256(code_verifier));

PKCE için, daha son adımda hem kod doğrulayıcı hem de meydan okuma değerlerine ihtiyacınız vardır.

İzin URL'sini Oluşturulması

Kullanıcı otorizasyon sürecini başlatmak için gereken parametrelerle bir otorizasyon URL'sini oluşturun:

  • client_id : uygulama'inizin kayıtlandıktan sonra alınan klien ID'si.
  • redirect_uri : uygulama'inizin yeniden giriş noktası.
  • scope : Uygulamanızın ihtiyaç duyduğu erişim izinlerini belirleyen istemci alan ayrımı listesindeki istemci alanları.
  • response_type : İzin kodu akışını göstermek için code ile ayarlanır. Sadece PKCE için gerekli
  • code_challenge : Bir kod verifikatöründen oluşturulan kod meydan okuma.
  • code_challenge_method : Bu parametre değerini S256 olarak ayarlayın, kod meydan okuma işleminin SHA-256 algoritmasını kullanarak dönüştürüldüğünü göstermek için.
  • state : İstek ve geri çağrı arasındaki devleti korumak için gizli, güvenli bir rastgele değer. Sadece PKCE olmayanlar için gerekli
  • client_secret : uygulama'inizin klii secret'i kaydedildikten sonra alınır. Eğer PKCE'yi kullanıyorsanız, bu parametriyi gösteren bir form bağlantısı olmalıdır, aşağıdaki örnekte gösterildiği gibi:
Örnek PKCE Yetki URL'si

https://apis.roblox.com/oauth/v1/authorize?client_id=7290610391231237934964
&code_challenge=PLEKKVCjdD1V_07wOKlAm7P02NC-LZ_1hQfdu5XSXEI
&code_challenge_method=S256
&redirect_uri=https://example.com/redirect
&scope=openid%20profile
&response_type=code
&state=abc123

Kullanıcılar URL'yi ziyaret ettiğinde onlar otorizasyon akışından geçerlilir. Başarılıysa, Roblox kullanıcıyı belirli redirect_uri 'e yönlendirir.

İzin İptali Çağrılara Cevap Verme

Bir otorizasyon akışı başarılı olduğunda, uygulamanız Roblox otorizasyon sunucusundan aldığı redirect_uri istekini alır. İstekte, code (katılımcı kodu) ve 1> state1> (değer daha önce sağlandıysa) parametreleri alır.

  • The code parameter contains an authorization code that the app can exchange for an access token from the authorization sunucu. Most backend server languages have standard ways to access query parameters as commodity objects. You'll need to obtain the code parameter and use it to exchange for access tokens.

  • state özelliği, orijinal olarak yetki talepsağladığınız bir opake değeri. Bu özelliği kullanarak yetki işlemlerinin devlet veya konteynerini koruyabilirsiniz.

Örneğin, yönlendirme URL'nizi https://example.com/redirect ile belirtirseniz, aşağıdaki URL ile bir https://example.com/redirect isteği alabilirsiniz.

Örnek Yönlendirme URL'si

https://example.com/redirect?code=10c45PNuquKnFJ6pUcy5-fHkghEM6lSegm-7hj9mVEprub1dSDuStuKK_EAUXY7AHTD63xcnmvxSLthp-C8g3jzIGZVzuXSd20Y2dEYI9hx0LZmPg95ME4z2K03UheiZbroyXUjYyB3ReoMqobzDVPzyx6IS8kj2Uu-11Xq_0JiTYxtDatuqXRNIAmJT8gMJmbSyOLOP_vnDvbeMUiBsqCRrkTGVbWSwYSc8sTVVE-535kYdqQOgNjH1ffCoZLGl8YYxLnpb2CXJlRQPrcjkA&state=6789

Erişim başarısızsa, uygulamanız bir GET isteği alır ve belirlenen yönlendirme URL'sine ile ilgili error , error_description ve 2> state2> (isteğe uygulanabilir) parametreleri için gerekenleri alır.

  • Error parametresi, onay sürecinde oluşan özel OAuth 2.0 hatasını gösterir.
  • error_description parçası hata ile ilgili ek ayrıntılar sağlar.
  • state parametresi, uygulamanızın bir başarısızlık durumunda devletini korumasına yardımcı olur.

Bir otorizasyon kodunu erişim jetonları için değiştirme

İzin code ını parçaladıktan sonra, istenen Roblox kaynaklarına erişmek için jetonlarla değiştirin:

  1. Bir erişim jetonu ve yenileme jetonu isteğini göndermek ile bir POST isteği göndererek ile token değiştirme noktasına . İstek, yetki kodunu, müşteri ID'sini ve kod doğrulayıcı değeri (PKCE) veya gizli kod (PKCE) içeren x-www-form-urlencoded biçiminde olmalıdır.

  2. Yanıt alınan uygulanabilir jetonları parsleyin. Giriş jetonu genellikle sunucu tarafından güvenli bir şekilde saklanır, böylece gelecekte yeni jetonlar alabilirsiniz.

    Örnek Token Ucuzu Sonuş

    {
    "access_token": "eyJhbGciOiJFUzI1NiIsImtpZCI6IlBOeHhpb2JFNE8zbGhQUUlUZG9QQ3FCTE81amh3aXZFS1pHOWhfTGJNOWMiLCJ0eXAiOiJKV11234.eyJzdWIiOiIyMDY3MjQzOTU5IiwiYWlkIjoiM2Q2MWU3NDctM2ExNS00NTE4LWJiNDEtMWU3M2VhNDUyZWIwIiwic2NvcGUiOiJvcGVuaWQ6cmVhZCBwcm9maWxlOnJlYWQiLCJqdGkiOiJBVC5QbmFWVHpJU3k2YkI5TG5QYnZpTCIsIm5iZiI6MTY5MTYzOTY5OCwiZXhwIjoxNjkxNjQwNTk4LCJpYXQiOjE2OTE2Mzk2OTgsImlzcyI6Imh0dHBzOi8vYXBpcy5yb2Jsb3guY29tL29hdXRoLyIsImF1ZCI6IjcyOTA2MTAzOTc5ODc5MzQ5Nj1234.BjwMkC8Q5a_iP1Q5Th8FrS7ntioAollv_zW9mprF1ats9CD2axCvupZydVzYphzQ8TawunnYXp0Xe8k0t8ithg",
    "refresh_token": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIiwia2lkIjoidGpHd1BHaURDWkprZEZkREg1dFZ5emVzRWQyQ0o1NDgtUi1Ya1J1TTBBRSIsInR5cCI6IkpXVCJ9..nKYZvjvXH6msDG8Udluuuw.PwP-_HJIjrgYdY-gMR0Q3cabNwIbmItcMEQHx5r7qStVVa5l4CbrKwJvjY-w9xZ9VFb6P70WmXndNifnio5BPZmivW5QkJgv5_sxLoCwsqB1bmEkz2nFF4ANLzQLCQMvQwgXHPMfCK-lclpVEwnHk4kemrCFOvfuH4qJ1V0Q0j0WjsSU026M67zMaFrrhSKwQh-SzhmXejhKJOjhNfY9hAmeS-LsLLdszAq_JyN7fIvZl1fWDnER_CeDAbQDj5K5ECNOHAQ3RemQ2dADVlc07VEt2KpSqUlHlq3rcaIcNRHCue4GfbCc1lZwQsALbM1aSIzF68klXs1Cj_ZmXxOSOyHxwmbQCHwY7aa16f3VEJzCYa6m0m5U_oHy84iQzsC-_JvBaeFCachrLWmFY818S-nH5fCIORdYgc4s7Fj5HdULnnVwiKeQLKSaYsfneHtqwOc_ux2QYv6Cv6Xn04tkB2TEsuZ7dFwPI-Hw2O30vCzLTcZ-Fl08ER0J0hhq4ep7B641IOnPpMZ1m0gpJJRPbHX_ooqHol9zHZ0gcLKMdYy1wUgsmn_nK_THK3m0RmENXNtepyLw_tSd5vqqIWZ5NFglKSqVnbomEkxneEJRgoFhBGMZiR-3FXMaVryUjq-N.Q_t4NGxTUSMsLVEppkTu0Q6rwt2rKJfFGuvy3s12345",
    "token_type": "Bearer",
    "expires_in": 899,
    "id_token": "eyJhbGciOiJFUzI1NiIsImtpZCI6IkNWWDU1Mi1zeWh4Y1VGdW5vNktScmtReFB1eW15YTRQVllodWdsd3hnNzgiLCJ0eXAiOiJKV11234.eyJzdWIiOiIyMDY3MjQzOTU5IiwibmFtZSI6ImxpbmtzZ29hdCIsIm5pY2tuYW1lIjoibGlua3Nnb2F0IiwicHJlZmVycmVkX3VzZXJuYW1lIjoibGlua3Nnb2F0IiwiY3JlYXRlZF9hdCI6MTYwNzM1NDIzMiwicHJvZmlsZSI6Imh0dHBzOi8vd3d3LnJvYmxveC5jb20vdXNlcnMvMjA2NzI0Mzk1OS9wcm9maWxlIiwibm9uY2UiOiIxMjM0NSIsImp0aSI6IklELnltd3ZjTUdpOVg4azkyNm9qd1I5IiwibmJmIjoxNjkxNjM5Njk4LCJleHAiOjE2OTE2NzU2OTgsImlhdCI6MTY5MTYzOTY5OCwiaXNzIjoiaHR0cHM6Ly9hcGlzLnJvYmxveC5jb20vb2F1dGgvIiwiYXVkIjoiNzI5MDYxMDM5Nzk4NzkzNDk2NCJ9.kZgCMJQGsariwCi8HqsUadUBMM8ZOmf_IPDoWyQY9gVX4Kx3PubDz-Q6MvZ9eU5spNFz0-PEH-G2WSvq2ljDyg",
    "scope": "openid profile"
    }

Bir kaynağa bir çağrı yapmak

Gereken erişim jetonuna sahip olduğunuzda, kaynak hizmetine güvenli çağrılar yapmak için jetonu kullanabilirsiniz. Tüm API isteklerinin başlığına erişim jetonunu ekleyin, böylece onları onaylayabilirsiniz.

Örneğin, tüm yetki akışını geçtikten sonra, uygulamanızın doğru şekilde işlediğini test etmek için tüm yetki akışınızı izleyin ve ardından bir GET isteği yapın bir kullanıcı bilgisi uç noktas

Örnek Kullanıcı Bilgisi Yanıtı

{
"sub": "12345678",
"name": "Jane Doe",
"nickname": "robloxjanedoe",
"preferred_username": "robloxjanedoe",
"created_at": 1607354232,
"profile": "https://roblox.com/users/12345678/profile"
}