Patreon Authenticator for Unity'ye hoş geldiniz
Gömülü HTTP sunucu desteği, gelişmiş güvenlik özellikleri ve platformlar arası uyumlulukla Patreon OAuth 2.0 kimlik doğrulamasını entegre etmek için kapsamlı bir Unity paketi.
Başlarken
Patreon Authenticator for Unity, Unity oyunlarınızla Patreon'un kimlik doğrulama sistemi arasında sorunsuz entegrasyon sağlayan güçlü bir eklentidir. Bu eklentiyle şunları yapabilirsiniz:
- Gelişmiş güvenlik: AES-256 şifreleme, gizleme ve güvenli depolama
- Gömülü HTTP sunucusu: OAuth geri çağrıları için yerleşik HTTP dinleyici
- Middleware desteği: Tüm platformlarda OAuth geri çağrıları için özel middleware
- Platformlar arası destek: WebGL, Android, iOS, Windows, Mac ve Linux'ta çalışır
- Güvenli token yönetimi: PBKDF2 anahtar türetmeyle cihaza özel şifreleme
- İş parçacığı güvenli işlemler: HTTP isteklerinin doğru işlenmesi
- Şık geri çağrı arayüzü: Özelleştirilebilir HTML başarı/hata sayfaları
- State doğrulama: State parametresi doğrulamasıyla CSRF koruması
- Token yenileme: Erişim token'ının otomatik yenilenmesi
- Kullanıcı profili alma: Kullanıcı bilgilerini ve abonelik ayrıntılarını getirme
- Güvenlik testleri: Yerleşik güvenlik doğrulama ve test araçları
- GIF desteği: GIF animasyon desteğiyle animasyonlu Patreon avatarları
Ön koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
- Unity 2021.3 LTS veya üzeri
- .NET Standard 2.1 veya üzeri
- Bir Patreon içerik üreticisi hesabı
- Temel Unity ve C# bilgisi
- Patreon API çağrıları için internet bağlantısı
Önemli not
Bu eklenti Unity 2021.3 LTS veya üzerini gerektirir. Daha eski sürümler desteklenmez.
Kurulum
1. Newtonsoft.Json paketini kurun (zorunlu)
ÖNEMLİ: Eklentiyi kullanmadan önce bu adım zorunludur!
- Unity'nin Package Manager'ını açın (
Window → Package Manager) - “+” butonuna tıklayın
- “Install package by name…” seçeneğini seçin
- Enter
com.unity.nuget.newtonsoft-json - Paketi kurmak için “Add”e tıklayın
Bu paket olmadan betikler derlenmez!
2. Eklenti dosyalarını kopyalayın
Assets/Plugins/PatreonAuthenticatorForUnity/klasörünü Unity projenize kopyalayınAssets/StreamingAssets/patreon-callback.htmldosyasını StreamingAssets klasörünüze kopyalayın
3. Sahne kurulumu
- PatreonConfig asset'ini oluşturun:
- Resources klasörüne gidin (klasör yoksa oluşturun)
- Project penceresinde sağ tıklayın
- Şuraya gidin
Create → Patreon Authenticator for Unity → Create New Config - Bu, asset'i
Assets/Resources/klasöründe oluşturur (PatreonConfig) - Temel ayarları yapılandırın (aşağıdaki Yapılandırma bölümüne bakın)
- Client ID ve Client Secret daha sonra PatreonReEncryptCredentials betiğiyle ayarlanacak
- PatreonManager GameObject'ini oluşturun:
- Hierarchy penceresinde sağ tıklayın
- Seçin
Create Empty - GameObject'in adını şu şekilde değiştirin:
PatreonManager
- PatreonManager'a gerekli betikleri ekleyin:
PatreonManagerGameObject'ini seçin- Add Component →
PatreonManagerbetiği - ÖNEMLİ: PatreonConfig asset'ini “Patreon Config” alanına atayın
- Add Component →
PatreonCallbackManagerbetiği (tüm platformları yönetir, aşağıdaki bileşenleri gerektirir) - Add Component →
PatreonEmbeddedServerbetiği (yalnızca masaüstü platformlar) - Add Component →
PatreonDeepLinkHandlerbetiği (yalnızca mobil platformlar) - Add Component →
PatreonWebGLHandlerbetiği (yalnızca WebGL platformu)
Tüm betikler uyumludur ve birlikte kullanılabilir.
-
Platforma özel kurulum:
📱 Mobil platformlar (Android/iOS):
PatreonDeepLinkHandlerotomatik olarak kullanılacak- Android kurulumu: Şunu
AndroidManifest.xmldosyanıza ekleyin:<activity android:name="com.unity3d.player.UnityPlayerActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="PatreonAuthenticatorForUnity.oauth" /> </intent-filter> </activity> - iOS kurulumu: Şunu
Info.plistdosyanıza ekleyin:<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLName</key> <string>Patreon OAuth</string> <key>CFBundleURLSchemes</key> <array> <string>PatreonAuthenticatorForUnity.oauth</string> </array> </dict> </array>
🌐 WebGL platformu:
PatreonWebGLHandlerotomatik olarak kullanılacak- OAuth geri çağrıları için middleware kullanır (ek kurulum gerekmez)
🖥️ Masaüstü platformlar (Windows/Mac/Linux):
PatreonEmbeddedServerotomatik olarak kullanılacak- Şu adreste yerel bir HTTP sunucusu oluşturur
localhost:3000
- Middleware bilgisi:
- OAuth geri çağrıları için tüm platformlar middleware kullanır
- Middleware OAuth akışını yönetir ve uygulamanıza yönlendirir
- Özel URI şeması: PatreonConfig'de yapılandırılır (varsayılan:
PatreonAuthenticatorForUnity.oauth) - Ücretsiz middleware seçeneği: GitHub Pages ile kendi middleware'inizi oluşturabilirsiniz
- Middleware kodunu şuradan kopyalayın
Assets/StreamingAssets/patreon-callback.html - Ücretsiz bir middleware çözümü için GitHub Pages'e yayımlayın
- PatreonConfig'deki yönlendirme URI'sini middleware'inizi gösterecek şekilde güncelleyin
- Özel URI şeması: Middleware'i PatreonConfig'deki özel URI şemanızı kullanacak şekilde güncelleyin
- Kurulumu doğrulayın:
- PatreonManager GameObject'inde gerekli tüm betikler ekli olmalı
- PatreonConfig, PatreonManager bileşenine atanmış olmalı
- Console'da derleme hatası görünmemeli
Kurulum tamamlandı
Unity Asset Store'dan içe aktardıktan sonra Assets/Plugins dizininizde 'PatreonAuthenticatorForUnity' klasörünü görmelisiniz.
Güvenlik özellikleri
Gelişmiş şifreleme sistemi
Eklenti, Patreon kimlik bilgilerinizi korumak için kapsamlı bir güvenlik sistemi içerir:
AES-256 şifreleme
- Client Secret, cihaza özel anahtarlarla AES-256 kullanılarak şifrelenir
- Azami güvenlik için 10,000 yinelemeli PBKDF2 anahtar türetme
- Cihaza özel şifreleme - anahtarlar her cihaz/uygulama için benzersizdir
- Her şifreleme işlemi için otomatik IV üretimi
XOR gizleme
- Client ID, XOR şifrelemeyle gizlenir
- Güvenli depolama için Base64 kodlama
- Herkese açık tanımlayıcılara uygun hafif koruma
Güvenli depolama
- Hassas veriler için şifreli PlayerPrefs depolama
- Hassas verilerin bellekten otomatik temizlenmesi
- Depolanan verileri kaldırmak için güvenli silme metotları
Güvenlik doğrulaması
PatreonSecurityTestbileşeniyle yerleşik güvenlik testleri- Şifreleme/şifre çözme işlemlerinin otomatik doğrulanması
- Güvenlik işlemleri için performans testleri
- Bellek güvenliği doğrulaması
Güvenlik seviyeleri
| Seviye | Client ID | Client Secret | Kullanım alanı |
|---|---|---|---|
| Azami | Gizlenmiş | Şifrelenmiş | Canlı ortam |
| Yüksek | Düz metin | Şifrelenmiş | Geliştirme |
| Orta | Gizlenmiş | Düz metin | Test |
| Yok | Düz metin | Düz metin | ÖNERİLMEZ |
Güvenlik için en iyi uygulamalar
- Canlı ortamda Client Secret için şifrelemeyi her zaman açın
- Mümkün olduğunda Client ID için gizleme kullanın
- PatreonConfig.asset dosyasını sürüm kontrolüne asla commit etmeyin
- Canlı ortam için derlemeden önce güvenlik sistemini test edin
- Tüm hassas veriler için güvenli depolama kullanın
- Artık gerekmediğinde hassas verileri bellekten temizleyin
KRİTİK: Kimlik bilgilerinin güvenli kurulumu
BU, GÜVENLİK İÇİN SON DERECE ÖNEMLİDİR!
Patreon kimlik bilgileriniz (Client ID ve Client Secret) son derece hassastır ve kullanmadan önce şifrelenmelidir. Onları ASLA düz metin olarak saklamayın!
Bu neden önemli
- Düz metin = güvenlik riski: Kimlik bilgileriniz düz metin olarak saklanırsa, build'inize erişen herkes onları çalabilir
- Maddi etki: Çalınan kimlik bilgileriyle Patreon hesabınıza erişilebilir ve maddi zarar doğabilir
- Mesleki etki: Güvenlik ihlalleri itibarınıza ve kullanıcıların güvenine zarar verebilir
- Hukuki sonuçlar: Yetersiz güvenlik önlemleri hukuki sorunlara yol açabilir
Kimlik bilgilerinizi güvenle nasıl kurarsınız
Patreon kimlik bilgilerinizi şifrelemek için şu adımları izleyin:
Adım 1: Yeniden şifreleme GameObject'i oluşturun
- Sahnenizde yeni bir boş GameObject oluşturun
- Adını
"PatreonEncryptCredentials"gibi bir şeyle değiştirin (bunu daha sonra sileceksiniz) - GameObject'e
PatreonEncryptCredentialsscript'ini ekleyin
Adım 2: Gerçek kimlik bilgilerinizi girin
- Hierarchy'de GameObject'i seçin
- Inspector'da açık talimatlarla birlikte yeniden şifreleme script'ini göreceksiniz
- İlgili alanlara gerçek kimlik bilgilerinizi girin:
Real Client Id: Patreon Client ID'nizReal Client Secret: Patreon Client Secret'ınız
Adım 3: PatreonConfig atayın (isteğe bağlı ama önerilir)
- PatreonConfig asset'inizi
PatreonConfig Assetalanına sürükleyin - PatreonConfig atarsanız: Değerler şifrelemeden sonra otomatik olarak ayarlanır
- PatreonConfig atamazsanız: Şifrelenmiş değerleri elle kopyalamanız gerekir
Adım 4: Kimlik bilgilerinizi yeniden şifreleyin
- Inspector'da script'e sağ tıklayın
- Bağlam menüsünden “Re-Encrypt All Credentials” seçin
- İşlemin bitmesini bekleyin - Console'da başarı mesajlarını göreceksiniz
Adım 5: Doğrulayın ve temizleyin
- Başarı mesajları için Console'u kontrol edin
- PatreonConfig atandıysa: Değerler otomatik olarak ayarlanır
- PatreonConfig atanmadıysa: Şifrelenmiş değerleri PatreonConfig'e elle kopyalayın
- GameObject'i silin - artık sahnenizde gerek yok
Yapılandırma
Patreon kurulumu
Eklentiyi Unity'de yapılandırmadan önce Patreon uygulamanızı kurmanız gerekir:
- Patreon içerik üreticisi olun:
- OAuth istemcisi kaydetmek için Patreon içerik üreticisi olmanız gerekir
- Patreon Developer Console'a gidin
- OAuth istemcisi oluşturun:
- “Create Client” veya “Register New Client”a tıklayın
- Uygulama bilgilerinizi doldurun
- ÖNEMLİ: Redirect URI'yi şuna ayarlayın:
http://localhost:3000/patreon-callback - Bu, PatreonConfig'teki redirect URI ile birebir aynı olmalıdır
- Kimlik bilgilerinizi alın:
- Client ID: OAuth istemci ayarlarınızdan kopyalayın
- Client Secret: OAuth istemci ayarlarınızdan kopyalayın (gizli tutun!)
- Creator ID: Patreon kullanıcı adınız (ör. Patreon'unuz
patreon.com/DryreLise Creator ID'nizDryreLolur)
GÜVENLİK UYARISI:
- Client ID ve Client Secret'ınızı ASLA kimseyle paylaşmayın
- Bu değerleri ASLA sürüm kontrolüne commit etmeyin
- Onları ASLA herkese açık forumlarda veya Discord kanallarında paylaşmayın
- Bu kimlik bilgileri Patreon hesabınıza tam erişim sağlar
Unity ayarları
PatreonConfig asset'ini oluşturduktan sonra (yukarıdaki Sahne kurulumuna bakın) Patreon API ayarlarınızı yapılandırın:
- Redirect URI:
http://localhost:3000/patreon-callback(Patreon konsol ayarlarıyla eşleşmelidir) - Creator ID: Patreon kullanıcı adınız (ör.
patreon.com/DryreLiçinDryreL) - Authentication Timeout: Kullanıcının kimlik doğrulaması için ne kadar bekleneceği (varsayılan: 120 saniye)
KRİTİK: PatreonConfig'teki Redirect URI, Patreon Developer Console ayarlarınızdakiyle birebir aynı olmalıdır!
ÖNEMLİ: PatreonConfig'i asla sürüm kontrolüne commit etmeyin!
Assets/Resources/PatreonConfig.assetsatırını şu dosyaya ekleyin:.gitignore- Bu dosya hassas API kimlik bilgileri içerir
PatreonEncryptCredentials script'ini kullandığınızda Client ID ve Client Secret otomatik olarak ayarlanır!
🌐 Middleware kurulum rehberi
Dinamik URI şeması kullanımı
Bu eklenti artık tüm platformların tek bir redirect URI kullanmasını sağlayan bir middleware sistemi kullanıyor.
1. OAuth URL'si oluşturma:
https://yourdomain.com/api/oauth/redirect?scheme=YOUR_APP_SCHEME
Örnekler:
https://yourdomain.com/api/oauth/redirect?scheme=mygame.oauthhttps://yourdomain.com/api/oauth/redirect?scheme=awesomeapp.authhttps://yourdomain.com/api/oauth/redirect?scheme=unitygame.patreon
2. Patreon uygulama ayarları:
- Redirect URI:
https://yourdomain.com/api/oauth/redirect?scheme=YOUR_APP_SCHEME - Client ID: Öncekiyle aynı
- Client Secret: Öncekiyle aynı
3. Platform kurulumu:
Android (AndroidManifest.xml):
<activity android:name="com.unity3d.player.UnityPlayerActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="YOUR_APP_SCHEME" />
</intent-filter>
</activity>
iOS (Info.plist):
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>Patreon OAuth</string>
<key>CFBundleURLSchemes</key>
<array>
<string>YOUR_APP_SCHEME</string>
</array>
</dict>
</array>
4. PatreonConfig kurulumu:
Özel URI şemanızı PatreonConfig'te yapılandırın:
- Custom URI Scheme: İstediğiniz şemaya ayarlayın (ör.
mygame.oauth) - Redirect URI: Middleware URL'nizle eşleşecek şekilde güncelleyin
- Tüm değişiklikler: PatreonConfig arayüzünden yapılır
5. Test URL'si:
https://yourdomain.com/api/oauth/redirect?scheme=YOUR_APP_SCHEME&code=test123&state=test456
✅ Avantajlar:
- Tüm oyunlar için tek middleware
- Her oyun için farklı dinamik şema
- Kolay kurulum, yalnızca şemayı değiştirin
- Otomatik platform algılama
🔧 Kullanım:
- Şemayı seçin:
mygame.oauth - Patreon uygulama ayarları:
https://yourdomain.com/api/oauth/redirect?scheme=mygame.oauth - Platform dosyalarını kopyalayın ve şemayı değiştirin
- Unity'de
customUriSchemeayarlayın - Test edin! 🎯
👑 Creator API kurulumu (isteğe bağlı)
Kampanya verileri, üye listeleri ve kademe bilgileri gibi gelişmiş özellikler için:
Adım 1: Creator's Access Token alın
- Patreon Developer Console'a gidin
- “Creator’s Access Token” oluşturun (OAuth Client değil)
- Kapsamları seçin:
campaigns,campaigns.members,campaigns.tiers - Access Token ve Refresh Token'ınızı kopyalayın
Adım 2: Creator API'yi etkinleştirin
PatreonEncryptCredentialsscript'inde:- ✅ “Enable Creator API” seçeneğini işaretleyin
- Creator Access Token'ınızı girin
- Creator Refresh Token'ınızı girin
- “Encrypt All Credentials”'a tıklayın
- Değerler PatreonConfig'e otomatik olarak ayarlanır
Alternatif: Elle yapılandırma
Creator API token'larını doğrudan PatreonConfig'te de ayarlayabilirsiniz:
- Creator Access Token: Kampanya/üye verilerine erişim için PatreonConfig'te ayarlayın
- Creator Refresh Token: Token yenileme için PatreonConfig'te ayarlayın
- Enable Creator API: Gelişmiş özellikleri açmak için PatreonConfig'te etkinleştirin
Not: Şifrelemenin yapıldığından emin olun!
Adım 3: Creator API'yi kullanın
// Get campaign information
StartCoroutine(PatreonManager.Instance.GetCampaignInfo());
// Get all campaign members/patrons
StartCoroutine(PatreonManager.Instance.GetCampaignMembers());
// Get campaign tiers/rewards
StartCoroutine(PatreonManager.Instance.GetCampaignTiers());
Adım 4: Arayüzde gösterin
PatreonUserInfoDisplay'ı yeni alanlarla kullanın:
- Kampanya adı, Kampanya özeti, Patron sayısı
- Kademe tutarı, Kademe açıklaması, Kademe sınırı
- Üyelik başlangıcı, Taahhüt durumu, Sonraki ödeme
Kaynak: Patreon API Guide
Kimlik doğrulama
Giriş akışı
Kimlik doğrulama süreci OAuth 2.0 standartlarını izler:
- Authenticator'ı başlatın
- Giriş sürecini başlatın
- Callback'i işleyin
- Token'ı doğrulayın
İşte basit bir örnek:
using DryreL.Patreon;
public class PatreonManager : MonoBehaviour
{
private PatreonAuthenticator authenticator;
void Start()
{
authenticator = new PatreonAuthenticator();
authenticator.OnLoginSuccess += OnLoginSuccess;
authenticator.OnLoginFailed += OnLoginFailed;
}
public void Login()
{
authenticator.StartLogin();
}
private void OnLoginSuccess(PatreonUser user)
{
Debug.Log($"Welcome, {user.FullName}!");
// Handle successful login
}
private void OnLoginFailed(string error)
{
Debug.LogError($"Login failed: {error}");
// Handle login failure
}
}
Token yönetimi
Eklenti token yenilemeyi ve saklamayı otomatik olarak yönetir:
// Check if user is authenticated
if (authenticator.IsAuthenticated)
{
// Get current user
PatreonUser user = authenticator.CurrentUser;
// Check subscription status
bool isSubscriber = user.IsSubscriber;
string tier = user.SubscriptionTier;
}
API Referansı
Sınıflar
PatreonManager
Patreon kimlik doğrulamasını yöneten ana singleton sınıf.
Özellikler:
bool IsUserAuthenticated()- Kullanıcı giriş yaptıysa true döndürürPatreonUser GetCurrentUser()- Geçerli kimliği doğrulanmış kullanıcıyı alırstring GetValidAccessToken()- Geçerli bir access token alır (gerekirse yeniler)
Metotlar:
void StartPatreonAuth()- Patreon OAuth akışını başlatırvoid Logout()- Geçerli kullanıcının oturumunu kapatır ve token'ları temizlervoid SetAccessToken(string token)- Access token'ı ayarlarvoid ExchangeCodeForToken(string code, string state)- Yetkilendirme kodunu access token ile değiştirir
PatreonUser
Bir Patreon kullanıcısını abonelik bilgileriyle birlikte temsil eder.
Özellikler:
string Id- Kullanıcının Patreon ID'sistring FullName- Kullanıcının tam adıstring Email- Kullanıcının e-posta adresistring FirstName- Kullanıcının adıstring LastName- Kullanıcının soyadıstring Vanity- Kullanıcının özel URL'sistring ImageUrl- Kullanıcının profil resmi URL'sibool IsPatron- Kullanıcının patron olup olmadığıfloat PledgeAmount- Dolar cinsinden taahhüt tutarıbool HasPledge- Kullanıcının aktif bir taahhüdü olup olmadığıstring DisplayName- Kullanıcının görünen adıstring PatronStatus- Kullanıcının patron durumustring TierTitle- Kullanıcının abonelik kademesi başlığıint CentsPledged- Sent cinsinden taahhüt tutarı
Metotlar:
void LoadProfileAvatar(Action<Sprite> onComplete)- Kullanıcının profil avatarını Sprite olarak yükler
Metotlar
StartLogin()
Patreon OAuth akışını başlatır.
public void StartLogin()
Döndürür: void
Örnek:
authenticator.StartLogin();
Logout()
Geçerli kullanıcının oturumunu kapatır ve kayıtlı token'ları temizler.
public void Logout()
Döndürür: void
Örnek:
authenticator.Logout();
Olaylar
OnLoginSuccess
Bir kullanıcı başarıyla giriş yaptığında tetiklenir.
public event Action<PatreonUser> OnLoginSuccess;
Parametreler:
PatreonUser user- Kimliği doğrulanmış kullanıcı
OnLoginFailed
Giriş başarısız olduğunda tetiklenir.
public event Action<string> OnLoginFailed;
Parametreler:
string error- Hatayı açıklayan hata mesajı
Örnekler
Temel kimlik doğrulama
using UnityEngine;
public class SimplePatreonExample : MonoBehaviour
{
void Start()
{
// Subscribe to events
PatreonManager.OnUserAuthenticated += HandleLoginSuccess;
PatreonManager.OnAuthenticationFailed += HandleLoginFailed;
}
public void LoginButtonClicked()
{
PatreonManager.Instance.StartPatreonAuth();
}
private void HandleLoginSuccess(PatreonUser user)
{
Debug.Log($"Welcome {user.FullName}!");
if (user.IsPatron)
{
Debug.Log($"You are a patron with tier: {user.TierTitle}");
Debug.Log($"Pledge amount: ${user.PledgeAmount:F2}");
// Unlock premium content
}
else
{
Debug.Log("You are not a patron");
// Show subscription prompt
}
}
private void HandleLoginFailed(string error)
{
Debug.LogError($"Login failed: {error}");
// Show error message to user
}
}
Premium içerik yönetimi
public class PremiumContentManager : MonoBehaviour
{
[SerializeField] private PatreonAuthenticator authenticator;
[SerializeField] private GameObject premiumContent;
void Start()
{
CheckSubscriptionStatus();
}
private void CheckSubscriptionStatus()
{
if (authenticator.IsAuthenticated)
{
PatreonUser user = authenticator.CurrentUser;
if (user.IsSubscriber)
{
EnablePremiumContent(user.SubscriptionTier);
}
else
{
DisablePremiumContent();
}
}
else
{
DisablePremiumContent();
}
}
private void EnablePremiumContent(string tier)
{
premiumContent.SetActive(true);
// Configure content based on tier
switch (tier)
{
case "Bronze":
// Bronze tier features
break;
case "Silver":
// Silver tier features
break;
case "Gold":
// Gold tier features
break;
}
}
private void DisablePremiumContent()
{
premiumContent.SetActive(false);
}
}
Sorun giderme
Sık karşılaşılan sorunlar
“Invalid Client ID” hatası
Sorun: Kimlik doğrulamaya çalışırken “Invalid Client ID” hatası alıyorsunuz.
Çözüm:
- Patreon Developer Portal'da Client ID'nizi doğrulayın
- Client ID'nin Unity'nin Project Settings'ine doğru girildiğinden emin olun
- Uygulamanızın Patreon'da doğru yapılandırıldığından emin olun
Token yenileme sorunları
Sorun: Token'lar otomatik olarak yenilenmiyor.
Çözüm:
- İnternet bağlantınızı kontrol edin
- Client Secret'ınızın doğru olduğunu doğrulayın
- Redirect URI'nizin birebir eşleştiğinden emin olun
Unity build sorunları
Sorun: Eklenti editörde çalışıyor ama build'lerde çalışmıyor.
Çözüm:
- Gerekli tüm bağımlılıkların build'e dahil edildiğinden emin olun
- Patreon yapılandırmanızın canlı ortam için doğru ayarlandığını kontrol edin
- Redirect URI'nize yayımlanan uygulamanızdan erişilebildiğini doğrulayın
Hata ayıklama modu
Daha ayrıntılı kayıt için hata ayıklama modunu açın:
PatreonConfig config = new PatreonConfig
{
// ... other settings
DebugMode = true
};
Platform desteği
| Platform | Durum | Notlar |
|---|---|---|
| WebGL | ✅ Tam destek | Gömülü sunucuyla tarayıcı tabanlı kimlik doğrulama |
| Android | ✅ Tam destek | Tarayıcıyla yerel entegrasyon, middleware (özel URI) |
| iOS | ✅ Tam destek | Tarayıcıyla yerel entegrasyon, middleware (özel URI) |
| Windows | ✅ Tam destek | 32-bit ve 64-bit build'ler |
| Mac | ✅ Tam destek | Universal binary desteği |
| Linux | ✅ Tam destek | Tüm büyük dağıtımlar |
Mobil platform özellikleri
- Application.identifier: iOS/Android'de tam destek
- Device ID: Cihaza özel güvenli şifreleme anahtarları
- Sistem tarayıcısı: Uygulamaya geri dönüşlü yerel OAuth akışı
- StreamingAssets: Platforma özel dosya işleme
- URL şemaları: Özel callback işleme
🔗 Platforma özel callback işleme
Tüm platformlar (birleşik middleware sistemi)
- Tek redirect URI:
https://yourdomain.com/api/oauth/redirect?scheme=YOUR_APP_SCHEME - Dinamik şema: Her oyun kendi URI şemasını kullanabilir
- Platform algılama: Otomatik platform algılama ve yönlendirme
- Evrensel destek: Masaüstü, mobil ve WebGL'de çalışır
Mobil platformlar (Android, iOS, Windows, UWP)
- Deep linking: Özel URI şeması (
YOUR_APP_SCHEME://patreon-callback) - Middleware yönlendirmesi:
https://yourdomain.com/api/oauth/redirect→ Deep link - Sistem tarayıcısı: Uygulamaya otomatik geri dönüşlü yerel OAuth akışı
- State doğrulama: state parametresiyle CSRF koruması
WebGL platformu
- Middleware akışı: Kullandığı:
https://yourdomain.com/api/oauth/redirect - JavaScript callback: üst pencereyle
postMessageiletişimi - Sunucu gerekmez: Barındırılan middleware hizmetini kullanır
- CORS desteği: Farklı kaynaklı istek işleme
Masaüstü platformlar (Windows, Mac, Linux)
- Middleware yönlendirmesi:
https://yourdomain.com/api/oauth/redirect→localhost:3000 - Gömülü sunucu: HTTP Listener şurada:
localhost:3000 - Loopback akışı: Tarayıcı → middleware → localhost → uygulama callback'i
- Bağımlılık yok: Saf .NET HttpListener uygulaması
📱 Mobil kurulum gereksinimleri
Android kurulumu
Assets/Plugins/Android/içinde AndroidManifest.xml oluşturun: ```xml
#### **iOS Setup**
1. **Player Settings** → **Other** → **Configuration**
2. **Add to Supported URL schemes**: `YOUR_APP_SCHEME`
3. Make sure **ios-info.plist** created.
4. **Xcode**: Verify URL scheme registration
#### **Patreon OAuth Client Configuration**
- **All Platforms**: Use single redirect URI with middleware
- **Redirect URI**: `https://yourdomain.com/api/oauth/redirect?scheme=YOUR_APP_SCHEME`
- **Client Type**: Select "Web application" (works for all platforms)
- **Dynamic Scheme**: Each game uses its own URI scheme
### 🌐 **Unified Middleware System**
**Hosted Middleware**: `https://yourdomain.com/api/oauth/redirect`
**Features:**
- **Platform Detection**: Automatic platform detection and routing
- **Dynamic Scheme**: Each game uses its own URI scheme
- **Universal Support**: Works on Desktop, Mobile, and WebGL
- **No Setup Required**: Uses hosted middleware service
**Middleware Workflow:**
1. **Patreon** → `https://yourdomain.com/api/oauth/redirect?scheme=YOUR_APP_SCHEME&code=...&state=...`
2. **Middleware** → Platform detection
3. **Redirect** → Platform-specific callback method
### 🚀 **Usage Examples**
#### **Platform-Specific OAuth Flow**
```csharp
// Automatic platform detection and callback handling
PatreonCallbackManager callbackManager = GetComponent<PatreonCallbackManager>();
callbackManager.StartPatreonOAuthFlow(clientId, state);
// Get platform-specific redirect URI
string redirectUri = callbackManager.GetPlatformRedirectUri();
Debug.Log($"Platform redirect URI: {redirectUri}");
Mobil deep link işleme
// Mobile deep link callback (called by system)
PatreonDeepLinkHandler deepLinkHandler = GetComponent<PatreonDeepLinkHandler>();
deepLinkHandler.HandleDeepLinkCallback("myapp.oauth://patreon-callback?code=abc123&state=xyz789");
// Test deep link callback
deepLinkHandler.TestDeepLinkCallback();
WebGL middleware işleme
// WebGL middleware callback
PatreonWebGLHandler webGLHandler = GetComponent<PatreonWebGLHandler>();
webGLHandler.StartPatreonOAuthFlow(clientId, state);
// Test WebGL callback
webGLHandler.TestWebGLCallback();
Platform bilgisi
// Show current platform and callback method
PatreonCallbackManager callbackManager = GetComponent<PatreonCallbackManager>();
callbackManager.ShowPlatformInfo();
// Output:
// 📱 Current Platform: AndroidPlayer
// 📱 Redirect URI: myapp.oauth://patreon-callback
// 🔗 Using deep link callback method
🧪 Test
Test komutları
Test Platform OAuth Flow: Platforma özel OAuth akışını test ederTest Deep Link Callback: Mobil deep link işlemeyi test ederTest WebGL Callback: WebGL middleware işlemeyi test ederShow Platform Info: Geçerli platform bilgisini gösterir
Test script'leri
PatreonCallbackManager: Platforma özel testPatreonDeepLinkHandler: Mobil deep link testiPatreonWebGLHandler: WebGL middleware testiPatreonMobileTest: Mobil uyumluluk testi
Güvenlik testi
Eklenti kapsamlı bir güvenlik test sistemi içerir:
1. Security Test bileşenini ekleyin
// Add PatreonSecurityTest component to any GameObject
// Right-click on GameObject → Add Component → PatreonSecurityTest
2. Güvenlik testlerini çalıştırın
// In Inspector, click "Run All Security Tests" or use code:
var securityTest = GetComponent<PatreonSecurityTest>();
securityTest.RunAllTests();
3. Bileşenleri tek tek test edin
// Test encryption only
securityTest.TestEncryption();
// Test obfuscation only
securityTest.TestObfuscation();
// Test secure storage only
securityTest.TestSecureStorage();
// Performance test
securityTest.PerformanceTest();
4. Güvenlik doğrulaması
// Validate entire security system
bool isValid = PatreonSecurity.PatreonSecurity.ValidateSecuritySystem();
Debug.Log($"Security system valid: {isValid}");
Destek
Yardım alın
Bir sorunla karşılaşırsanız veya sorunuz olursa:
- Dokümantasyona bakın - En sık karşılaşılan sorunlar burada ele alınıyor
- Discord topluluğumuza katılın - Diğer geliştiricilerden ve ekibimizden yardım alın
- Destekle iletişime geçin - Teknik sorunlar için şu bilgilerle bize yazın:
- Unity sürümü
- Eklenti sürümü
- Sorunu yeniden oluşturma adımları
- Hata mesajları
- Log dosyaları
Topluluk
Destek ve güncellemeler için topluluğumuza katılın:
- E-posta: [email protected]
- Discord: Topluluğumuza katılın
- YouTube: DryreL Hub
- YouTube #2: DryreL Software
Güncellemeler
En yeni özellikler ve hata düzeltmelerinden haberdar olun:
- Unity Asset Store: Marketplace'ten indirin (yakında)
- Discord topluluğu: Destek ve güncellemeler için DryreL Hub Discord'una katılın
FERAGATNAME VE SORUMLULUK
ÖNEMLİ GÜVENLİK BİLDİRİMİ
Bu eklenti, Patreon API kimlik bilgilerinizi korumaya yardımcı olmak için AES-256 şifreleme ve gizleme özellikleri sunar. Ancak kimlik bilgilerinizin güvenliğinden ve açığa çıkmalarından doğabilecek her türlü sonuçtan TAMAMEN SİZ SORUMLUSUNUZ.
Sunulan güvenlik özellikleri
- AES-256 şifreleme: Client Secret'ı korumak için
- XOR gizleme: Client ID'yi gizlemek için
- Çok katmanlı anahtar türetme: Platforma özel şifreleme anahtarları
- Kurcalamaya karşı koruma: Temel bütünlük doğrulaması
- Güvenlik denetim kaydı: İzleme ve hata ayıklama araçları
Sizin sorumluluklarınız
- Güvenli saklama:
PatreonConfigdosyasını asla sürüm kontrolüne commit etmeyin - Doğru kullanım: Bu dokümantasyondaki tüm güvenlik yönergelerine uyun
- Düzenli güncelleme: Kimlik bilgilerini güncel tutun ve düzenli olarak değiştirin
- Ortam güvenliği: Geliştirme ve canlı ortamlarınızın güvenli olduğundan emin olun
- Erişim kontrolü: Kimlik bilgisi dosyalarına ve build çıktılarına erişimi sınırlayın
Sorumluluk reddi
DRYREL HUB SORUMLU TUTULAMAZ: aşağıdakiler dahil ancak bunlarla sınırlı olmamak üzere hiçbir doğrudan, dolaylı, arızi, özel, sonuç olarak doğan veya cezai zarardan:
- Maddi kayıplar: Gelir kaybı, iş kesintisi veya parasal zararlar
- Güvenlik ihlalleri: Patreon hesabınıza veya verilerinize yetkisiz erişim
- API kötüye kullanımı: Kimlik bilgilerinizin üçüncü kişilerce kötüye kullanılması
- Veri ifşası: Hassas bilgilerin sızması
- Hizmet kesintisi: Kesinti veya hizmetin kullanılamaması
- Hukuki sonuçlar: Kimlik bilgilerinin açığa çıkmasından doğan her türlü hukuki sorun
BU EKLENTİYİ KENDİ SORUMLULUĞUNUZDA KULLANIN. HİÇBİR GARANTİ VERİLMEZ.
🔧 API V2 hesap türü sorunları ve çözümleri
⚠️ Farklı hesap türleriyle bilinen sorunlar
Farklı Patreon hesap türleriyle (içerik üreticisi ve normal kullanıcı) test ederken şu sorunlarla karşılaşabilirsiniz:
1. E-posta alınamıyor
- Sorun: Normal kullanıcılarda e-posta alanı boş dönüyor
- Neden: OAuth kapsam sınırlamaları
- Çözüm: Genişletilmiş OAuth kapsamları artık şunları içeriyor
identity[email]
2. Profil resmi alınamıyor
- Sorun: Profil resmi URL'si boş
- Neden: API alan eşleştirme farkları
- Çözüm:
image_urlboşsa otomatik olarakthumb_urlkullanılır
3. Yanlış kademe/durum bilgisi
- Sorun: Normal kullanıcılar “creator” kademesinde görünüyor
- Neden: Hesap türleri arasında API yanıt tutarsızlıkları
- Çözüm: Gelişmiş kayıt ve doğrulama (console uyarılarına bakın)
4. Sosyal bağlantılar alınamıyor
- Sorun: YouTube, Twitter, Facebook bağlantıları boş
- Neden: Normal kullanıcılar için sınırlı API alan erişimi
- Çözüm: API çağrılarında genişletilmiş alan istekleri
🔍 Hata ayıklama bilgisi
Eklenti artık kapsamlı hata ayıklama kaydı içeriyor. Unity Console'da şunlara bakın:
🔧 === USER DATA DEBUG ===- Kullanıcı verilerinin tam analizi🔧 Email not available- Kapsam sınırlaması uyarıları🔧 Normal user has tier_title- Hesap türü tutarsızlıkları
📋 Test kontrol listesi
Farklı hesap türleriyle test ederken:
- İçerik üreticisi hesabı testi:
- ✅ E-posta alınmalı
- ✅ Profil resmi alınmalı
- ✅ Kademe bilgisi doğru olmalı
- ✅ Sosyal bağlantılar mevcut olabilir
- Normal kullanıcı hesabı testi:
- ⚠️ E-posta mevcut olmayabilir (kapsama bağlı)
- ✅ Profil resmi alınmalı (yedek yöntemle)
- ⚠️ Kademe bilgisi yanlış olabilir (uyarı olarak kaydedilir)
- ⚠️ Sosyal bağlantılar mevcut olmayabilir
🛠️ Genişletilmiş OAuth kapsamları
Eklenti artık genişletilmiş kapsamlar istiyor:
identity identity[email] identity.memberships campaigns
Bu, farklı hesap türlerinde kullanıcı verilerine daha iyi erişim sağlar.
🔧 API veri doğrulaması ve düzeltmeleri
Önemli not: Eklenti, bilinen Patreon API V2 tutarsızlıkları için istemci tarafında veri doğrulaması ve düzeltmeleri içerir. Bu şu nedenlerle gereklidir:
- API veri sorunları: Patreon API V2 bazen normal kullanıcılar için yanlış veri döndürüyor (ör. normal kullanıcılarda “Creator” kademesi gösteriliyor)
- Veri çelişkileri: API birbiriyle çelişen değerler döndürebilir (ör.
patron_status: "not_patron"amais_patron: true) - Hesap türlerinin karışması: API yanıtlarında kullanıcı ve içerik üreticisi verileri bazen karışabilir
- Takipçi durumu sorunları:
is_followeralanı güvenilir değildir ve kullanıcı takip etse bilefalsedöndürebilir
Eklentinin yaptıkları:
- ✅ API'den gelen tüm kullanıcı verilerini doğrular
- ✅ Bilinen veri tutarsızlıklarını otomatik olarak düzeltir
- ✅ Hata ayıklama için API sorunlarını kaydeder
- ✅ Gerektiğinde yedek değerler sağlar
- ✅ Şu gibi güvenilmez alanlar hakkında uyarır:
is_follower
İzlenecek console kayıtları:
🔧 API ISSUE: Normal user has incorrect tier_title: Creator - fixing🔧 API ISSUE: is_follower is false - this might be incorrect due to Patreon API V2 limitations🔧 API DATA ISSUES DETECTED AND FIXED - This indicates Patreon API V2 data inconsistencies
Bilinen API sınırlamaları:
is_follower: Bu alan Patreon API V2'da güvenilir değildir ve kullanıcı içerik üreticisini takip etse bilefalsedöndürebilir- Takipçi algılama: Takipçileri doğru algılamak için campaigns/pledges uç noktalarına ek API çağrıları gerekir
- Kaynak: Doğru takipçi algılama yöntemleri için Patreon API Guide'a bakın
Bu yaklaşım, API tutarsızlıklarından bağımsız olarak güvenilir kullanıcı verisi sağlar.
Teşekkürler!
Patreon Authenticator for Unity'yi kullandığınız için teşekkürler. Bu eklentinin Patreon destekçileriniz için harika deneyimler yaratmanıza yardımcı olmasını umuyoruz!

