Unity'ye dön

DryreL Software Dokümantasyon

Patreon Authenticator for Unity

Patreon Authenticator for Unity'yi Unity projelerinize entegre etmek için eksiksiz rehber

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!

  1. Unity'nin Package Manager'ını açın (Window → Package Manager)
  2. “+” butonuna tıklayın
  3. “Install package by name…” seçeneğini seçin
  4. Enter com.unity.nuget.newtonsoft-json
  5. Paketi kurmak için “Add”e tıklayın

Bu paket olmadan betikler derlenmez!

2. Eklenti dosyalarını kopyalayın

  1. Assets/Plugins/PatreonAuthenticatorForUnity/ klasörünü Unity projenize kopyalayın
  2. Assets/StreamingAssets/patreon-callback.html dosyasını StreamingAssets klasörünüze kopyalayın

3. Sahne kurulumu

  1. 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
  2. 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
  3. PatreonManager'a gerekli betikleri ekleyin:
    • PatreonManager GameObject'ini seçin
    • Add Component → PatreonManager betiği
    • ÖNEMLİ: PatreonConfig asset'ini “Patreon Config” alanına atayın
    • Add Component → PatreonCallbackManager betiği (tüm platformları yönetir, aşağıdaki bileşenleri gerektirir)
    • Add Component → PatreonEmbeddedServer betiği (yalnızca masaüstü platformlar)
    • Add Component → PatreonDeepLinkHandler betiği (yalnızca mobil platformlar)
    • Add Component → PatreonWebGLHandler betiği (yalnızca WebGL platformu)

    Tüm betikler uyumludur ve birlikte kullanılabilir.

  4. Platforma özel kurulum:

    📱 Mobil platformlar (Android/iOS):

    • PatreonDeepLinkHandler otomatik olarak kullanılacak
    • Android kurulumu: Şunu AndroidManifest.xml dosyanı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.plist dosyanı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:

    • PatreonWebGLHandler otomatik olarak kullanılacak
    • OAuth geri çağrıları için middleware kullanır (ek kurulum gerekmez)

    🖥️ Masaüstü platformlar (Windows/Mac/Linux):

    • PatreonEmbeddedServer otomatik olarak kullanılacak
    • Şu adreste yerel bir HTTP sunucusu oluşturur localhost:3000
  5. 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
  6. 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ı

  • PatreonSecurityTest bileş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

  1. Canlı ortamda Client Secret için şifrelemeyi her zaman açın
  2. Mümkün olduğunda Client ID için gizleme kullanın
  3. PatreonConfig.asset dosyasını sürüm kontrolüne asla commit etmeyin
  4. Canlı ortam için derlemeden önce güvenlik sistemini test edin
  5. Tüm hassas veriler için güvenli depolama kullanın
  6. 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

  1. Sahnenizde yeni bir boş GameObject oluşturun
  2. Adını "PatreonEncryptCredentials" gibi bir şeyle değiştirin (bunu daha sonra sileceksiniz)
  3. GameObject'e PatreonEncryptCredentials script'ini ekleyin

Adım 2: Gerçek kimlik bilgilerinizi girin

  1. Hierarchy'de GameObject'i seçin
  2. Inspector'da açık talimatlarla birlikte yeniden şifreleme script'ini göreceksiniz
  3. İlgili alanlara gerçek kimlik bilgilerinizi girin:
    • Real Client Id: Patreon Client ID'niz
    • Real Client Secret: Patreon Client Secret'ınız
  1. PatreonConfig asset'inizi PatreonConfig Asset alanına sürükleyin
  2. PatreonConfig atarsanız: Değerler şifrelemeden sonra otomatik olarak ayarlanır
  3. PatreonConfig atamazsanız: Şifrelenmiş değerleri elle kopyalamanız gerekir

Adım 4: Kimlik bilgilerinizi yeniden şifreleyin

  1. Inspector'da script'e sağ tıklayın
  2. Bağlam menüsünden “Re-Encrypt All Credentials” seçin
  3. İşlemin bitmesini bekleyin - Console'da başarı mesajlarını göreceksiniz

Adım 5: Doğrulayın ve temizleyin

  1. Başarı mesajları için Console'u kontrol edin
  2. PatreonConfig atandıysa: Değerler otomatik olarak ayarlanır
  3. PatreonConfig atanmadıysa: Şifrelenmiş değerleri PatreonConfig'e elle kopyalayın
  4. 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:

  1. Patreon içerik üreticisi olun:
  2. 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
  3. 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/DryreL ise Creator ID'niz DryreL olur)

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/DryreL için DryreL)
  • 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.asset satı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.oauth
  • https://yourdomain.com/api/oauth/redirect?scheme=awesomeapp.auth
  • https://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:

  1. Şemayı seçin: mygame.oauth
  2. Patreon uygulama ayarları: https://yourdomain.com/api/oauth/redirect?scheme=mygame.oauth
  3. Platform dosyalarını kopyalayın ve şemayı değiştirin
  4. Unity'de customUriScheme ayarlayın
  5. 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

  1. Patreon Developer Console'a gidin
  2. “Creator’s Access Token” oluşturun (OAuth Client değil)
  3. Kapsamları seçin: campaigns, campaigns.members, campaigns.tiers
  4. Access Token ve Refresh Token'ınızı kopyalayın

Adım 2: Creator API'yi etkinleştirin

  1. PatreonEncryptCredentials script'inde:
    • ✅ “Enable Creator API” seçeneğini işaretleyin
    • Creator Access Token'ınızı girin
    • Creator Refresh Token'ınızı girin
  2. “Encrypt All Credentials”'a tıklayın
  3. 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:

  1. Authenticator'ı başlatın
  2. Giriş sürecini başlatın
  3. Callback'i işleyin
  4. 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ür
  • PatreonUser GetCurrentUser() - Geçerli kimliği doğrulanmış kullanıcıyı alır
  • string GetValidAccessToken() - Geçerli bir access token alır (gerekirse yeniler)

Metotlar:

  • void StartPatreonAuth() - Patreon OAuth akışını başlatır
  • void Logout() - Geçerli kullanıcının oturumunu kapatır ve token'ları temizler
  • void SetAccessToken(string token) - Access token'ı ayarlar
  • void 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'si
  • string FullName - Kullanıcının tam adı
  • string Email - Kullanıcının e-posta adresi
  • string FirstName - Kullanıcının adı
  • string LastName - Kullanıcının soyadı
  • string Vanity - Kullanıcının özel URL'si
  • string ImageUrl - Kullanıcının profil resmi URL'si
  • bool 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 durumu
  • string 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:

  1. Patreon Developer Portal'da Client ID'nizi doğrulayın
  2. Client ID'nin Unity'nin Project Settings'ine doğru girildiğinden emin olun
  3. 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:

  1. İnternet bağlantınızı kontrol edin
  2. Client Secret'ınızın doğru olduğunu doğrulayın
  3. 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:

  1. Gerekli tüm bağımlılıkların build'e dahil edildiğinden emin olun
  2. Patreon yapılandırmanızın canlı ortam için doğru ayarlandığını kontrol edin
  3. 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 postMessage iletiş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

  1. 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}");
// 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 eder
  • Test Deep Link Callback: Mobil deep link işlemeyi test eder
  • Test WebGL Callback: WebGL middleware işlemeyi test eder
  • Show Platform Info: Geçerli platform bilgisini gösterir

Test script'leri

  • PatreonCallbackManager: Platforma özel test
  • PatreonDeepLinkHandler: Mobil deep link testi
  • PatreonWebGLHandler: WebGL middleware testi
  • PatreonMobileTest: 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:

  1. Dokümantasyona bakın - En sık karşılaşılan sorunlar burada ele alınıyor
  2. Discord topluluğumuza katılın - Diğer geliştiricilerden ve ekibimizden yardım alın
  3. 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:

Güncellemeler

En yeni özellikler ve hata düzeltmelerinden haberdar olun:

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: PatreonConfig dosyası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_url boşsa otomatik olarak thumb_url kullanı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)
  • 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:

  1. İçerik üreticisi hesabı testi:
    • ✅ E-posta alınmalı
    • ✅ Profil resmi alınmalı
    • ✅ Kademe bilgisi doğru olmalı
    • ✅ Sosyal bağlantılar mevcut olabilir
  2. 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:

  1. 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)
  2. Veri çelişkileri: API birbiriyle çelişen değerler döndürebilir (ör. patron_status: "not_patron" ama is_patron: true)
  3. Hesap türlerinin karışması: API yanıtlarında kullanıcı ve içerik üreticisi verileri bazen karışabilir
  4. Takipçi durumu sorunları: is_follower alanı güvenilir değildir ve kullanıcı takip etse bile false dö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 bile false dö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!