OAuth2 + Kurulum URL'leri
GameVox'un OAuth2 akışı, veri formatı düzeyinde Discord'unkiyle uyumludur. Authorize URL'si, token değişimi ve kapsam adları eşleşir; GameVox yalnızca authorization-code ve refresh-token grant'lerini destekler. Bu sayfa, kurulum bağlantının nasıl davrandığını ve kurulum onay ekranının nasıl göründüğünü belirleyen küçük alan kümesini anlatır.
Bot olmadan, insanların kendi web sitene veya uygulamana giriş yapmasını mı istiyorsun? Bkz. GameVox ile Giriş Yap.
Endpoint'ler
GET https://gamevox.com/oauth2/authorize/
POST https://app-api.gamevox.com/api/oauth2/token
POST https://app-api.gamevox.com/api/oauth2/token/revoke
GET https://app-api.gamevox.com/api/oauth2/@me Bir sunucu kurulumu için yalnızca authorize URL'si yeterlidir: kullanıcı bir sunucu seçer ve bot eklenir, token'la değiştirilecek bir code yoktur. Token endpoint'leri GameVox ile Giriş Yap içindir.
İstemci kimlik bilgileri
Her uygulama bir client ID (uygulamanın snowflake'i) ve bir client secret alır. Secret uygulama oluşturulurken bir kez ve yenilendiğinde bir kez gösterilir; biz yalnızca bcrypt hash'ini, önekini ve son 4 karakterini saklarız.
- Yenileme:
POST /developer-portal/applications/{id}/reset-secret. Önceki secret'ı hemen geçersiz kılar. - Kullanım: secret, GameVox ile Giriş Yap için token endpoint'inde backend'inin kimliğini doğrular. Public client ve
client_credentialsgrant'i yoktur: PKCE olsun ya da olmasın her token isteği secret gerektirir.
Kurulum bağlamları
Kurulum sekmesinde birbirinden bağımsız iki onay kutusu:
- Kullanıcı kurulumu: henüz kullanılamıyor. Ayar kaydedilir, ancak kullanıcı kurulumları yayına girene kadar
integration_type=1içeren vebotkapsamı olmayan kurulum bağlantıları onay ekranında reddedilir. - Sunucu kurulumu: bot bir sunucuya kurulur; komutlar yalnızca o sunucuda kullanılabilir.
En az biri açık olmalı. Kurulum onay ekranı neyin mevcut olduğuna göre dallanır: ikisi de açıksa kullanıcı seçer; yalnızca biri açıksa seçici gizlenir.
Veri formatı notu: “sunucu kurulumu” sütununun adı, Discord ile bayt düzeyinde aynı kalmak için install_guild_install'dır. Portal arayüzü “Sunucu” der, çünkü GameVox bunlara guild değil sunucu der.
Varsayılan kurulum ayarları
Açık olan her bağlam için, kurulum onay ekranının önceden seçeceği kapsamları ve (sunucu kurulumu için) izin bit alanını yapılandırırsın. Kullanıcı onay ekranında kapsamları yine daraltabilir.
- Kapsamlar: bağlam başına en fazla 25. Karakter kümesi
[a-z0-9._-]. Tekrarlananlar sessizce tekilleştirilir. - İzinler (yalnızca sunucu kurulumu): ondalık string, en fazla 32 karakter. Discord'un izin tam sayısıyla eşleşir.
Yaygın varsayılanlar:
User install → ["applications.commands"]
Server install → ["bot", "applications.commands"], perms="0" Kurulum bağlantısı modu
Açılır liste, dizin listendeki Kur düğmesinin nasıl çözümleneceğini seçer:
- Yok: kurulum düğmesi yok; kurulumu platform dışında kendin hallediyorsun.
- GameVox'un sağladığı: URL'yi varsayılan kurulum ayarlarından biz oluştururuz. Portal geçerli URL'yi altında gösterir.
- Özel URL: tam nitelikli bir
https://URL'si sağlarsın (ör. kullanıcı başına state üreten kendi kurulum gateway'in).
GameVox'un sağladığı URL'nin biçimi
https://gamevox.com/oauth2/authorize
?client_id={application.id}
&permissions={perms}
&scope={boşlukla birleştirilmiş, URL kodlanmış kapsamlar}
&integration_type={0=sunucu, 1=kullanıcı}
&response_type=code İki bağlam da açıksa bağlantı integration_type parametresini içermez ve onay ekranı seçiciyi gösterir.
Public key + HTTP modunda etkileşimler
Her uygulama, Genel Bilgiler sekmesinde salt okunur olarak gösterilen 32 baytlık bir Ed25519 public key alır. Uygulama ayarlarında Etkileşim Endpoint URL'ni ayarla, GameVox da etkileşim payload'larını ilgili private key ile imzalayarak oraya POST etsin. Public key'i otomatik yükleyen kütüphaneler (discord-interactions ve benzerleri) ek bir yapılandırma olmadan imzaları doğrular.
- Endpoint yapılandırılmışsa ve
2xxdöndürüyorsa etkileşim yalnızca HTTP üzerinden iletilir; gateway üzerinden hiçbir şey gitmez. - Endpoint'e ulaşılamıyorsa veya
2xxdışında bir yanıt dönüyorsa GameVox, etkileşimi botunun gateway oturumu üzerinden göndermeye geri döner. - İmza şeması, header adları ve PING onayı Discord ile bayt bayt eşleşir.
- Kendi barındırdığın sunuculardaki etkileşimler de bulut sunucularındakiyle aynı şekilde iletilir.
- Yine de bir gateway oturumunu bağlı tut. GameVox her etkileşimi endpoint'ine POST etmeden önce bu oturum üzerinden uygulamana teslim eder; bağlı oturum yoksa hiçbir şey iletilmez.
- Yanıt gövdesi yok sayılır; tek istisna Endpoint'e ping at düğmesinin gönderdiği PING'dir. Her etkileşimi
POST /interactions/{id}/{token}/callbackçağırarak yanıtla.
Kapsamlar
| Kapsam | Etkisi |
|---|---|
bot | Sunucuya bir bot kullanıcısı ekleyen sunucu kurulumları için zorunlu. |
applications.commands | Uygulamanın kurulum kapsamında slash / kullanıcı / mesaj komutları kaydetmesini sağlar. |
identify, email, guilds, role_connections.write | bot olmadan kullanılan kullanıcı girişi kapsamları. Bkz. GameVox ile Giriş Yap. |
Discord'dan farklar
- Premium Apps / entitlement yok; sunduğumuz tek komut izni endpoint'i
applications.commands.permissions.update. - Token'lar için “ekip tarafından yönetilen” bir kimlik yok. Ekibe ait uygulamalarda bile OAuth token'ları belirli bir ekip üyesine değil, uygulamaya aittir.
- Uygulama Test Edenler (Ekipler sekmesi), özel uygulamalar için kurulum onay ekranındaki herkese açık/özel kısıtlamasını atlar. Test edenler listesindeki kullanıcılar özel bir uygulamayı kurabilir; diğer herkes bulunamadı sayfası görür.