OAuth istemcisi nasıl oluşturulur
API sürümü 2026-10-affable-towhee
Entegrasyonlar sayfasında “İstemci oluştur” düğmesine basmadan önce üç şeye karar verin: istemcinin neler yapabileceğine, gizli anahtarını hangi sürecin tutacağına ve çağrılarının bedelini kimin ödeyeceğine. Kurallar Kimlik doğrulama kılavuzunda yer alır; bu sayfa onları iki kurgusal şirkete, Luba ve Farducks'a uygular.
Luba: Dive Deck
Luba, bir ulaşım ve yolculuk paylaşım hizmeti olarak otonom denizaltılar işletir. Dive Deck, her yolcuya kabin ekranında dalışla ilgili bir ifadeyi öğrendiği dilde gösterir; Luba'nın operasyon ekibi de kullanım hakkından ne kadar kaldığını izler.
Luba tek bir istemci oluşturur: “Kelime üret” (vocab:generate) ve “Kullanımı oku” (usage:read) izinlerine sahip, “Planınızın kotası” (allowance) üzerinden ücretlendirilen Luba Dive Deck. Bu istemciyi iki süreç paylaşır ve her biri değişim sırasında yalnızca ihtiyaç duyduğu kapsamı ister. scope göndermeyen bir değişim, istemcinin izin verilen her kapsamını alır; istemcinin izni olmayan bir kapsamı isteyen bir değişim ise invalid_scope ile bütünüyle reddedilir, asla sessizce daraltılmaz.
Sevk sunucusu her dalışın ifadelerini yazar. Yalnızca vocab:generate kapsamını ister; böylece ondan sızan bir token Luba'nın kullanımını okuyamaz.
export LINGARA_TOKEN="$(curl -sS --fail-with-body -X POST "https://api.getlingara.com/oauth/token" \
-u "$LINGARA_CLIENT_ID:$LINGARA_CLIENT_SECRET" \
-d "grant_type=client_credentials" \
--data-urlencode "scope=vocab:generate" | jq -r '.access_token // error(.error)')"curl -N -X POST "https://api.getlingara.com/v1/vocab/stream" \
-H "Authorization: Bearer $LINGARA_TOKEN" \
-H "Content-Type: application/json" \
-d '{"level":2,"source_lang":"en","target_lang":"zh","count":8}'Operasyon panosu, aynı istemci kimliğini ve gizli anahtarı kullanan ikinci bir sunucu tarafı süreçtir. Yalnızca usage:read kapsamını ister ve kullanım hakkından ne kadar kaldığını okur.
export LINGARA_TOKEN="$(curl -sS --fail-with-body -X POST "https://api.getlingara.com/oauth/token" \
-u "$LINGARA_CLIENT_ID:$LINGARA_CLIENT_SECRET" \
-d "grant_type=client_credentials" \
--data-urlencode "scope=usage:read" | jq -r '.access_token // error(.error)')"curl "https://api.getlingara.com/v1/usage" \
-H "Authorization: Bearer $LINGARA_TOKEN"Her iki süreç de Luba'nın sunucularında çalışır. Kabindeki tablet ifadeleri sevk sunucusundan ister ve asla gizli anahtarı ya da bir token'ı tutmaz, çünkü bir yolcunun dokunabileceği bir cihazdaki her şey okunabilir. Nedenini Kimlik doğrulama kılavuzundaki “Gizli anahtarları ve token'ları bir sunucuda tutun” bölümü açıklar.
Aynı istemci, klonlayıp çalıştırabileceğiniz bir proje olarak: integrations/luba-dive-deck
Farducks: Batter Rewards
Farducks, balık ve patates kızartması satan bir market zinciridir. Bir sipariş kızarırken Batter Rewards sadakat uygulaması Farducks'ın kendi arka ucundan kısa bir ders planı ister, ardından onu geri okur. Uygulama ve kasalar Lingara'yı değil, her zaman Farducks'ın arka ucunu çağırır; bu yüzden hiçbiri gizli anahtarı tutmaz.
Farducks tek bir istemci oluşturur: “Ders planı oluştur” (lesson_plans:write) ve “Ders planlarını oku” (lesson_plans:read) izinlerine sahip, “Planınızın kotası” (allowance) üzerinden ücretlendirilen Farducks Batter Rewards. Bugün bir istemci yalnızca bu ücretlendirmeyle oluşturulabilir ve bir istemcinin ücretlendirmesi oluşturulduğu anda sabitlenir. Diğer yol olan metered (“Kullandıkça öde”), Kimlik doğrulama kılavuzundaki “Çağrının bedelini kim öder” bölümünde açıklanır.
Arka uç yalnızca lesson_plans:write kapsamını ister ve planı oluşturur. Yanıt akış halinde gelir ve started olayı planın plan_id değerini taşır.
export LINGARA_TOKEN="$(curl -sS --fail-with-body -X POST "https://api.getlingara.com/oauth/token" \
-u "$LINGARA_CLIENT_ID:$LINGARA_CLIENT_SECRET" \
-d "grant_type=client_credentials" \
--data-urlencode "scope=lesson_plans:write" | jq -r '.access_token // error(.error)')"curl -N -X POST "https://api.getlingara.com/v1/lesson-plans" \
-H "Authorization: Bearer $LINGARA_TOKEN" \
-H "Content-Type: application/json" \
-d '{"context":"Ordering food at a night market","source_lang":"en","target_lang":"zh","level":2}'ID değerini bu plan_id olarak ayarlayın, ardından lesson_plans:read kapsamını isteyin ve planı geri okuyun. Tek bir değişim, istemcinin kapsamlarından birkaçını scope içinde boşlukla ayırarak isteyebilir; buradaki her komut yalnızca birini ister, çünkü her biri tek bir çağrıdan oluşur.
export LINGARA_TOKEN="$(curl -sS --fail-with-body -X POST "https://api.getlingara.com/oauth/token" \
-u "$LINGARA_CLIENT_ID:$LINGARA_CLIENT_SECRET" \
-d "grant_type=client_credentials" \
--data-urlencode "scope=lesson_plans:read" | jq -r '.access_token // error(.error)')"curl "https://api.getlingara.com/v1/lesson-plans/$ID" \
-H "Authorization: Bearer $LINGARA_TOKEN"Bir gün gizli anahtar bir destek talebine yapıştırılır. Farducks, Entegrasyonlar sayfasında “Yeni gizli anahtar” düğmesine basar ve yenisini arka uca dağıtır, eski gizli anahtarın “Son kullanım” tarihi değişmeyi bırakana kadar bekler, ardından eski gizli anahtarda “İptal et” düğmesine basar. Eski gizli anahtarla değiştirilerek alınmış her erişim token'ı o andan itibaren reddedilir. Kimlik doğrulama kılavuzundaki “Gizli anahtarı yenileyin” bölümü, iki gizli anahtar sınırını ve bir istemcinin tek gizli anahtarının neden iptal edilemediğini açıklar.
Aynı istemci, klonlayıp çalıştırabileceğiniz bir proje olarak: integrations/farducks-batter-rewards
Sırada ne var
Kimlik doğrulama kılavuzu değişimin hatalarını, bir token'ın süresi dolduğunda ne yapılacağını ve yenileme kuralını kapsar. Sürümler kılavuzu, bir istemcinin sabitlendiği sürümü ve tek bir çağrı için başka bir sürümün nasıl seçileceğini kapsar.
Bir çeviri ile İngilizce referans arasında fark varsa, İngilizce referans geçerlidir.