Patreon Authenticator for Unity में आपका स्वागत है
Patreon OAuth 2.0 ऑथेंटिकेशन जोड़ने के लिए एक पूरा Unity पैकेज, बिल्ट-इन HTTP सर्वर, उन्नत सुरक्षा फ़ीचर्स और क्रॉस-प्लेटफ़ॉर्म संगतता के साथ।
शुरुआत करें
Patreon Authenticator for Unity एक शक्तिशाली प्लगइन है जो आपके Unity गेम्स को Patreon के ऑथेंटिकेशन सिस्टम से आसानी से जोड़ता है। इससे आप:
- उन्नत सुरक्षा: AES-256 एन्क्रिप्शन, ऑब्फ़स्केशन और सुरक्षित स्टोरेज
- बिल्ट-इन HTTP सर्वर: OAuth कॉलबैक के लिए एम्बेडेड HTTP लिसनर
- Middleware सपोर्ट: सभी प्लेटफ़ॉर्म पर OAuth कॉलबैक के लिए कस्टम middleware
- क्रॉस-प्लेटफ़ॉर्म: WebGL, Android, iOS, Windows, Mac और Linux पर चलता है
- सुरक्षित टोकन मैनेजमेंट: PBKDF2 की डेरिवेशन के साथ डिवाइस-विशिष्ट एन्क्रिप्शन
- थ्रेड-सेफ़ ऑपरेशन: HTTP अनुरोधों का सही प्रबंधन
- सुंदर कॉलबैक UI: सफलता और त्रुटि के लिए कस्टमाइज़ होने वाले HTML पेज
- State वैलिडेशन: state पैरामीटर की जाँच से CSRF सुरक्षा
- टोकन रीफ़्रेश: एक्सेस टोकन का अपने आप रीफ़्रेश
- यूज़र प्रोफ़ाइल प्राप्ति: यूज़र डेटा और मेंबरशिप जानकारी
- सुरक्षा परीक्षण: सुरक्षा की जाँच और परीक्षण के बिल्ट-इन टूल
- GIF सपोर्ट: GIF एनिमेशन सपोर्ट के साथ एनिमेटेड Patreon अवतार
आवश्यकताएँ
शुरू करने से पहले सुनिश्चित करें कि आपके पास ये हैं:
- Unity 2021.3 LTS या नया
- .NET Standard 2.1 या नया
- Patreon क्रिएटर अकाउंट
- Unity और C# की बुनियादी जानकारी
- Patreon API अनुरोधों के लिए इंटरनेट कनेक्शन
ज़रूरी नोट
इस प्लगइन के लिए Unity 2021.3 LTS या नया चाहिए। पुराने वर्ज़न समर्थित नहीं हैं।
इंस्टॉलेशन
1. Newtonsoft.Json पैकेज इंस्टॉल करें (ज़रूरी)
ज़रूरी: प्लगइन इस्तेमाल करने से पहले यह स्टेप अनिवार्य है!
- Unity में Package Manager खोलें (
Window → Package Manager) - "+" बटन दबाएँ
- "Install package by name…" चुनें
- Enter
com.unity.nuget.newtonsoft-json - पैकेज इंस्टॉल करने के लिए "Add" दबाएँ
इस पैकेज के बिना स्क्रिप्ट कंपाइल नहीं होंगी!
2. प्लगइन फ़ाइलें कॉपी करें
Assets/Plugins/PatreonAuthenticatorForUnity/फ़ोल्डर अपने Unity प्रोजेक्ट में कॉपी करेंAssets/StreamingAssets/patreon-callback.htmlफ़ाइल StreamingAssets फ़ोल्डर में कॉपी करें
3. सीन सेटअप
- PatreonConfig एसेट बनाएँ:
- Resources फ़ोल्डर पर जाएँ (न हो तो बनाएँ)
- Project विंडो में राइट-क्लिक करें
- यहाँ जाएँ:
Create → Patreon Authenticator for Unity → Create New Config - एसेट
Assets/Resources/फ़ोल्डर में बनेगा (PatreonConfig) - बुनियादी सेटिंग्स सेट करें (नीचे कॉन्फ़िगरेशन सेक्शन देखें)
- Client ID और Client Secret बाद में PatreonReEncryptCredentials स्क्रिप्ट से सेट होंगे
- PatreonManager GameObject बनाएँ:
- Hierarchy विंडो में राइट-क्लिक करें
- चुनें
Create Empty - GameObject का नाम बदलकर रखें
PatreonManager
- PatreonManager में ज़रूरी स्क्रिप्ट जोड़ें:
PatreonManagerGameObject चुनें- Add Component →
PatreonManagerस्क्रिप्ट - ज़रूरी: PatreonConfig एसेट को "Patreon Config" फ़ील्ड में असाइन करें
- Add Component →
PatreonCallbackManagerस्क्रिप्ट (सभी प्लेटफ़ॉर्म पर चलती है, नीचे के कंपोनेंट चाहिए) - Add Component →
PatreonEmbeddedServerस्क्रिप्ट (सिर्फ़ डेस्कटॉप प्लेटफ़ॉर्म) - Add Component →
PatreonDeepLinkHandlerस्क्रिप्ट (सिर्फ़ मोबाइल प्लेटफ़ॉर्म) - Add Component →
PatreonWebGLHandlerस्क्रिप्ट (सिर्फ़ WebGL प्लेटफ़ॉर्म)
सभी स्क्रिप्ट संगत हैं और साथ इस्तेमाल हो सकती हैं।
-
प्लेटफ़ॉर्म-विशिष्ट सेटअप:
📱 मोबाइल प्लेटफ़ॉर्म (Android/iOS):
PatreonDeepLinkHandlerअपने आप इस्तेमाल होगा- 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="PatreonAuthenticatorForUnity.oauth" /> </intent-filter> </activity> - iOS सेटअप: अपनी
Info.plistमें जोड़ें:<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLName</key> <string>Patreon OAuth</string> <key>CFBundleURLSchemes</key> <array> <string>PatreonAuthenticatorForUnity.oauth</string> </array> </dict> </array>
🌐 WebGL प्लेटफ़ॉर्म:
PatreonWebGLHandlerअपने आप इस्तेमाल होगा- OAuth कॉलबैक के लिए middleware इस्तेमाल करता है (अतिरिक्त सेटअप की ज़रूरत नहीं)
🖥️ डेस्कटॉप प्लेटफ़ॉर्म (Windows/Mac/Linux):
PatreonEmbeddedServerअपने आप इस्तेमाल होगा- यहाँ लोकल HTTP सर्वर बनाता है:
localhost:3000
- Middleware के बारे में:
- सभी प्लेटफ़ॉर्म middleware इस्तेमाल करते हैं OAuth कॉलबैक के लिए
- Middleware OAuth फ़्लो संभालता है और आपके ऐप पर वापस भेजता है
- कस्टम URI स्कीम: PatreonConfig में सेट होती है (डिफ़ॉल्ट:
PatreonAuthenticatorForUnity.oauth) - मुफ़्त middleware विकल्प: आप GitHub Pages पर अपना middleware बना सकते हैं
- middleware कोड यहाँ से कॉपी करें:
Assets/StreamingAssets/patreon-callback.html - इसे GitHub Pages पर होस्ट करें, यह मुफ़्त middleware है
- PatreonConfig में redirect URI को अपने middleware की ओर अपडेट करें
- कस्टम URI स्कीम: middleware को PatreonConfig की अपनी URI स्कीम पर सेट करें
- अपना सेटअप जाँचें:
- PatreonManager GameObject पर सभी ज़रूरी स्क्रिप्ट होनी चाहिए
- PatreonConfig, PatreonManager कंपोनेंट में असाइन होना चाहिए
- Console में कोई कंपाइलेशन एरर नहीं होना चाहिए
इंस्टॉलेशन पूरा हुआ
Unity Asset Store से इम्पोर्ट के बाद Assets/Plugins डायरेक्टरी में 'PatreonAuthenticatorForUnity' फ़ोल्डर दिखना चाहिए।
सुरक्षा फ़ीचर्स
उन्नत एन्क्रिप्शन सिस्टम
इस प्लगइन में आपके Patreon क्रेडेंशियल्स की सुरक्षा के लिए एक पूरा सुरक्षा सिस्टम है:
AES-256 एन्क्रिप्शन
- Client Secret डिवाइस-विशिष्ट कीज़ से AES-256 में एन्क्रिप्ट होता है
- अधिकतम सुरक्षा के लिए 10,000 इटरेशन के साथ PBKDF2 की डेरिवेशन
- डिवाइस-विशिष्ट एन्क्रिप्शन — हर डिवाइस/ऐप के लिए अलग कीज़
- हर एन्क्रिप्शन ऑपरेशन के लिए अपने आप IV बनना
XOR ऑब्फ़स्केशन
- Client ID XOR एन्क्रिप्शन से ऑब्फ़स्केट होता है
- सुरक्षित स्टोरेज के लिए Base64 एन्कोडिंग
- सार्वजनिक आइडेंटिफ़ायर के लिए उपयुक्त हल्की सुरक्षा
सुरक्षित स्टोरेज
- संवेदनशील डेटा के लिए एन्क्रिप्टेड PlayerPrefs स्टोरेज
- मेमोरी से संवेदनशील डेटा का अपने आप साफ़ होना
- सहेजे गए डेटा के लिए सुरक्षित डिलीट मेथड्स
सुरक्षा जाँच
PatreonSecurityTestकंपोनेंट के साथ बिल्ट-इन सुरक्षा परीक्षण- एन्क्रिप्शन/डिक्रिप्शन ऑपरेशन की अपने आप जाँच
- सुरक्षा ऑपरेशन के लिए परफ़ॉर्मेंस टेस्टिंग
- मेमोरी सुरक्षा की जाँच
सुरक्षा स्तर
| स्तर | Client ID | Client Secret | उपयोग |
|---|---|---|---|
| अधिकतम | ऑब्फ़स्केटेड | एन्क्रिप्टेड | प्रोडक्शन |
| उच्च | सादा टेक्स्ट | एन्क्रिप्टेड | डेवलपमेंट |
| मध्यम | ऑब्फ़स्केटेड | सादा टेक्स्ट | टेस्टिंग |
| कोई नहीं | सादा टेक्स्ट | सादा टेक्स्ट | अनुशंसित नहीं |
सुरक्षा के सर्वोत्तम तरीके
- प्रोडक्शन में Client Secret के लिए हमेशा एन्क्रिप्शन चालू रखें
- जब संभव हो, Client ID के लिए ऑब्फ़स्केशन इस्तेमाल करें
- PatreonConfig.asset को वर्ज़न कंट्रोल में कभी कमिट न करें
- प्रोडक्शन बिल्ड से पहले सुरक्षा सिस्टम टेस्ट करें
- किसी भी संवेदनशील डेटा के लिए सुरक्षित स्टोरेज इस्तेमाल करें
- ज़रूरत ख़त्म होने पर संवेदनशील डेटा मेमोरी से साफ़ करें
बेहद ज़रूरी: क्रेडेंशियल्स का सुरक्षित सेटअप
यह सुरक्षा के लिए बेहद ज़रूरी है!
आपके Patreon क्रेडेंशियल्स (Client ID और Client Secret) बेहद संवेदनशील हैं और इस्तेमाल से पहले एन्क्रिप्ट होने चाहिए। इन्हें कभी भी सादे टेक्स्ट में न रखें!
यह क्यों ज़रूरी है
- सादा टेक्स्ट = सुरक्षा जोखिम: अगर आपके क्रेडेंशियल्स सादे टेक्स्ट में हैं, तो आपके बिल्ड तक पहुँच रखने वाला कोई भी उन्हें चुरा सकता है
- आर्थिक असर: चुराए गए क्रेडेंशियल्स से आपके Patreon अकाउंट तक पहुँचा जा सकता है और आर्थिक नुकसान हो सकता है
- पेशेवर असर: सुरक्षा में सेंध आपकी साख और यूज़र्स के भरोसे को नुकसान पहुँचा सकती है
- कानूनी असर: अपर्याप्त सुरक्षा उपायों से कानूनी समस्याएँ हो सकती हैं
अपने क्रेडेंशियल्स सुरक्षित रूप से कैसे सेट करें
अपने Patreon क्रेडेंशियल्स एन्क्रिप्ट करने के लिए ये स्टेप अपनाएँ:
स्टेप 1: री-एन्क्रिप्शन GameObject बनाएँ
- अपने सीन में एक नया खाली GameObject बनाएँ
- इसका नाम बदलकर
"PatreonEncryptCredentials"जैसा कुछ रखें (इसे बाद में हटा देंगे) - GameObject में
PatreonEncryptCredentialsस्क्रिप्ट जोड़ें
स्टेप 2: अपने असली क्रेडेंशियल्स डालें
- Hierarchy में GameObject चुनें
- Inspector में आपको साफ़ निर्देशों के साथ री-एन्क्रिप्शन स्क्रिप्ट दिखेगी
- तय फ़ील्ड में अपने असली क्रेडेंशियल्स भरें:
Real Client Id: आपका Patreon Client IDReal Client Secret: आपका Patreon Client Secret
स्टेप 3: PatreonConfig असाइन करें (वैकल्पिक लेकिन अनुशंसित)
- अपना PatreonConfig एसेट
PatreonConfig Assetफ़ील्ड में खींचें - अगर आप PatreonConfig असाइन करते हैं: एन्क्रिप्शन के बाद वैल्यू अपने आप सेट हो जाएँगी
- अगर आप PatreonConfig असाइन नहीं करते: एन्क्रिप्टेड वैल्यू आपको ख़ुद कॉपी करनी होंगी
स्टेप 4: अपने क्रेडेंशियल्स री-एन्क्रिप्ट करें
- Inspector में स्क्रिप्ट पर राइट-क्लिक करें
- कॉन्टेक्स्ट मेन्यू से “Re-Encrypt All Credentials” चुनें
- प्रक्रिया पूरी होने तक रुकें - Console में सफलता के संदेश दिखेंगे
स्टेप 5: जाँचें और साफ़ करें
- सफलता के संदेशों के लिए Console देखें
- अगर PatreonConfig असाइन था: वैल्यू अपने आप सेट होती हैं
- अगर PatreonConfig असाइन नहीं था: एन्क्रिप्टेड वैल्यू ख़ुद PatreonConfig में कॉपी करें
- GameObject हटा दें - अब सीन में इसकी ज़रूरत नहीं
कॉन्फ़िगरेशन
Patreon सेटअप
Unity में प्लगइन कॉन्फ़िगर करने से पहले आपको अपना Patreon ऐप्लिकेशन सेट करना होगा:
- Patreon क्रिएटर बनें:
- OAuth क्लाइंट रजिस्टर करने के लिए Patreon क्रिएटर होना ज़रूरी है
- Patreon Developer Console पर जाएँ
- OAuth क्लाइंट बनाएँ:
- “Create Client” या “Register New Client” पर क्लिक करें
- अपने ऐप्लिकेशन की जानकारी भरें
- ज़रूरी: redirect URI यह रखें:
http://localhost:3000/patreon-callback - यह आपके PatreonConfig के redirect URI से बिल्कुल मेल खाना चाहिए
- अपने क्रेडेंशियल्स पाएँ:
- Client ID: अपनी OAuth क्लाइंट सेटिंग्स से कॉपी करें
- Client Secret: अपनी OAuth क्लाइंट सेटिंग्स से कॉपी करें (इसे गुप्त रखें!)
- Creator ID: आपका Patreon यूज़रनेम (जैसे आपका Patreon
patreon.com/DryreLहै तो Creator IDDryreLहै)
सुरक्षा चेतावनी:
- अपना Client ID और Client Secret कभी भी किसी से साझा न करें
- इन वैल्यू को कभी भी वर्ज़न कंट्रोल में कमिट न करें
- इन्हें कभी भी सार्वजनिक फ़ोरम या Discord चैनलों में पोस्ट न करें
- ये क्रेडेंशियल्स आपके Patreon अकाउंट तक पूरी पहुँच देते हैं
Unity सेटिंग्स
PatreonConfig एसेट बनाने के बाद (ऊपर सीन सेटअप देखें) अपनी Patreon API सेटिंग्स कॉन्फ़िगर करें:
- Redirect URI:
http://localhost:3000/patreon-callback(Patreon कंसोल सेटिंग्स से मेल खाना चाहिए) - Creator ID: आपका Patreon यूज़रनेम (जैसे
patreon.com/DryreLके लिएDryreL) - Authentication Timeout: यूज़र ऑथेंटिकेशन के लिए कितनी देर रुकना है (डिफ़ॉल्ट: 120 सेकंड)
बेहद ज़रूरी: PatreonConfig का Redirect URI आपकी Patreon Developer Console सेटिंग्स से बिल्कुल मेल खाना चाहिए!
ज़रूरी: PatreonConfig को कभी वर्ज़न कंट्रोल में कमिट न करें!
Assets/Resources/PatreonConfig.assetको अपनी इस फ़ाइल में जोड़ें:.gitignore- इस फ़ाइल में संवेदनशील API क्रेडेंशियल्स हैं
PatreonEncryptCredentials स्क्रिप्ट इस्तेमाल करने पर Client ID और Client Secret अपने आप सेट हो जाएँगे!
🌐 Middleware सेटअप गाइड
डायनेमिक URI स्कीम का इस्तेमाल
यह प्लगइन अब एक middleware सिस्टम इस्तेमाल करता है, जिससे सभी प्लेटफ़ॉर्म एक ही redirect URI इस्तेमाल कर सकते हैं।
1. OAuth URL बनाना:
https://yourdomain.com/api/oauth/redirect?scheme=YOUR_APP_SCHEME
उदाहरण:
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 ऐप सेटिंग्स:
- Redirect URI:
https://yourdomain.com/api/oauth/redirect?scheme=YOUR_APP_SCHEME - Client ID: पहले जैसा
- Client Secret: पहले जैसा
3. प्लेटफ़ॉर्म सेटअप:
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 सेटअप:
PatreonConfig में अपनी कस्टम URI स्कीम कॉन्फ़िगर करें:
- Custom URI Scheme: अपनी पसंद की स्कीम रखें (जैसे
mygame.oauth) - Redirect URI: अपने middleware URL से मेल खाने के लिए अपडेट करें
- सभी बदलाव: PatreonConfig इंटरफ़ेस से किए जाते हैं
5. टेस्ट URL:
https://yourdomain.com/api/oauth/redirect?scheme=YOUR_APP_SCHEME&code=test123&state=test456
✅ फ़ायदे:
- सभी गेम्स के लिए एक middleware
- हर गेम के लिए अलग डायनेमिक स्कीम
- आसान सेटअप, बस स्कीम बदलें
- प्लेटफ़ॉर्म की अपने आप पहचान
🔧 इस्तेमाल:
- स्कीम चुनें:
mygame.oauth - Patreon ऐप सेटिंग्स:
https://yourdomain.com/api/oauth/redirect?scheme=mygame.oauth - प्लेटफ़ॉर्म फ़ाइलें कॉपी करें और स्कीम बदलें
- Unity में
customUriSchemeसेट करें - टेस्ट करें! 🎯
👑 Creator API सेटअप (वैकल्पिक)
कैंपेन डेटा, मेंबर लिस्ट और टियर जानकारी जैसे उन्नत फ़ीचर्स के लिए:
स्टेप 1: Creator's Access Token पाएँ
- Patreon Developer Console पर जाएँ
- “Creator’s Access Token” बनाएँ (OAuth Client नहीं)
- स्कोप चुनें:
campaigns,campaigns.members,campaigns.tiers - अपना Access Token और Refresh Token कॉपी करें
स्टेप 2: Creator API चालू करें
PatreonEncryptCredentialsस्क्रिप्ट में:- ✅ “Enable Creator API” पर टिक करें
- अपना Creator Access Token डालें
- अपना Creator Refresh Token डालें
- “Encrypt All Credentials” पर क्लिक करें
- वैल्यू अपने आप PatreonConfig में सेट हो जाएँगी
विकल्प: मैन्युअल कॉन्फ़िगरेशन
आप Creator API टोकन सीधे PatreonConfig में भी सेट कर सकते हैं:
- Creator Access Token: कैंपेन/मेंबर डेटा एक्सेस के लिए PatreonConfig में सेट करें
- Creator Refresh Token: टोकन रिन्यूअल के लिए PatreonConfig में सेट करें
- Enable Creator API: उन्नत फ़ीचर्स के लिए PatreonConfig में चालू करें
नोट: पक्का करें कि एन्क्रिप्शन हो चुका है!
स्टेप 3: Creator API इस्तेमाल करें
// Get campaign information
StartCoroutine(PatreonManager.Instance.GetCampaignInfo());
// Get all campaign members/patrons
StartCoroutine(PatreonManager.Instance.GetCampaignMembers());
// Get campaign tiers/rewards
StartCoroutine(PatreonManager.Instance.GetCampaignTiers());
स्टेप 4: UI में दिखाएँ
PatreonUserInfoDisplay को नए फ़ील्ड्स के साथ इस्तेमाल करें:
- कैंपेन का नाम, कैंपेन सारांश, पैट्रन संख्या
- टियर राशि, टियर विवरण, टियर सीमा
- सदस्य कब से, प्लेज स्थिति, अगला चार्ज
संदर्भ: Patreon API Guide
ऑथेंटिकेशन
लॉगिन फ़्लो
ऑथेंटिकेशन प्रक्रिया OAuth 2.0 मानकों का पालन करती है:
- ऑथेंटिकेटर इनिशियलाइज़ करें
- लॉगिन प्रक्रिया शुरू करें
- कॉलबैक संभालें
- टोकन वैलिडेट करें
यह रहा एक बुनियादी उदाहरण:
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
}
}
टोकन मैनेजमेंट
प्लगइन टोकन रीफ़्रेश और स्टोरेज अपने आप संभालता है:
// 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 रेफ़रेंस
क्लासेस
PatreonManager
Patreon ऑथेंटिकेशन संभालने वाली मुख्य singleton क्लास।
प्रॉपर्टीज़:
bool IsUserAuthenticated()- यूज़र लॉग इन है तो true लौटाता हैPatreonUser GetCurrentUser()- मौजूदा ऑथेंटिकेटेड यूज़र देता हैstring GetValidAccessToken()- एक मान्य access token देता है (ज़रूरत हो तो रीफ़्रेश करता है)
मेथड्स:
void StartPatreonAuth()- Patreon OAuth फ़्लो शुरू करता हैvoid Logout()- मौजूदा यूज़र को लॉग आउट करता है और टोकन साफ़ करता हैvoid SetAccessToken(string token)- access token सेट करता हैvoid ExchangeCodeForToken(string code, string state)- ऑथराइज़ेशन कोड को access token से बदलता है
PatreonUser
सब्सक्रिप्शन जानकारी के साथ एक Patreon यूज़र को दर्शाता है।
प्रॉपर्टीज़:
string Id- यूज़र का Patreon IDstring FullName- यूज़र का पूरा नामstring Email- यूज़र का ईमेल पताstring FirstName- यूज़र का पहला नामstring LastName- यूज़र का उपनामstring Vanity- यूज़र का वैनिटी URLstring ImageUrl- यूज़र की प्रोफ़ाइल इमेज का URLbool IsPatron- क्या यूज़र पैट्रन हैfloat PledgeAmount- डॉलर में प्लेज राशिbool HasPledge- क्या यूज़र की कोई सक्रिय प्लेज हैstring DisplayName- यूज़र का डिस्प्ले नामstring PatronStatus- यूज़र की पैट्रन स्थितिstring TierTitle- यूज़र के सब्सक्रिप्शन टियर का शीर्षकint CentsPledged- सेंट में प्लेज राशि
मेथड्स:
void LoadProfileAvatar(Action<Sprite> onComplete)- यूज़र का प्रोफ़ाइल अवतार Sprite के रूप में लोड करता है
मेथड्स
StartLogin()
Patreon OAuth फ़्लो शुरू करता है।
public void StartLogin()
लौटाता है: void
उदाहरण:
authenticator.StartLogin();
Logout()
मौजूदा यूज़र को लॉग आउट करता है और सहेजे गए टोकन साफ़ करता है।
public void Logout()
लौटाता है: void
उदाहरण:
authenticator.Logout();
इवेंट्स
OnLoginSuccess
यूज़र के सफलतापूर्वक लॉग इन करने पर चलता है।
public event Action<PatreonUser> OnLoginSuccess;
पैरामीटर:
PatreonUser user- ऑथेंटिकेटेड यूज़र
OnLoginFailed
लॉगिन विफल होने पर चलता है।
public event Action<string> OnLoginFailed;
पैरामीटर:
string error- विफलता बताने वाला एरर संदेश
उदाहरण
बुनियादी ऑथेंटिकेशन
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
}
}
प्रीमियम कंटेंट मैनेजमेंट
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);
}
}
समस्या निवारण
आम समस्याएँ
“Invalid Client ID” एरर
समस्या: ऑथेंटिकेट करते समय “Invalid Client ID” एरर आ रहा है।
समाधान:
- Patreon Developer Portal में अपना Client ID जाँचें
- पक्का करें कि Client ID Unity की Project Settings में सही डाला गया है
- पक्का करें कि आपका ऐप्लिकेशन Patreon में सही कॉन्फ़िगर है
टोकन रीफ़्रेश समस्याएँ
समस्या: टोकन अपने आप रीफ़्रेश नहीं हो रहे।
समाधान:
- अपना इंटरनेट कनेक्शन जाँचें
- पक्का करें कि आपका Client Secret सही है
- पक्का करें कि आपका redirect URI बिल्कुल मेल खाता है
Unity बिल्ड समस्याएँ
समस्या: प्लगइन एडिटर में चलता है लेकिन बिल्ड में नहीं।
समाधान:
- पक्का करें कि सभी ज़रूरी डिपेंडेंसी बिल्ड में शामिल हैं
- जाँचें कि आपका Patreon कॉन्फ़िगरेशन प्रोडक्शन के लिए सही सेट है
- पक्का करें कि आपके डिप्लॉय किए गए ऐप से redirect URI तक पहुँचा जा सकता है
डीबग मोड
ज़्यादा विस्तृत लॉगिंग के लिए डीबग मोड चालू करें:
PatreonConfig config = new PatreonConfig
{
// ... other settings
DebugMode = true
};
प्लेटफ़ॉर्म सपोर्ट
| प्लेटफ़ॉर्म | स्टेटस | नोट्स |
|---|---|---|
| WebGL | ✅ पूरा सपोर्ट | एम्बेडेड सर्वर के साथ ब्राउज़र-आधारित ऑथेंटिकेशन |
| Android | ✅ पूरा सपोर्ट | ब्राउज़र के साथ नेटिव इंटीग्रेशन, middleware (कस्टम URI) |
| iOS | ✅ पूरा सपोर्ट | ब्राउज़र के साथ नेटिव इंटीग्रेशन, middleware (कस्टम URI) |
| Windows | ✅ पूरा सपोर्ट | 32-bit और 64-bit बिल्ड |
| Mac | ✅ पूरा सपोर्ट | Universal binary सपोर्ट |
| Linux | ✅ पूरा सपोर्ट | सभी प्रमुख डिस्ट्रीब्यूशन |
मोबाइल प्लेटफ़ॉर्म फ़ीचर्स
- Application.identifier: iOS/Android पर पूरा सपोर्ट
- Device ID: सुरक्षित डिवाइस-विशिष्ट एन्क्रिप्शन कीज़
- सिस्टम ब्राउज़र: ऐप पर वापसी के साथ नेटिव OAuth फ़्लो
- StreamingAssets: प्लेटफ़ॉर्म-विशिष्ट फ़ाइल हैंडलिंग
- URL स्कीम: कस्टम कॉलबैक हैंडलिंग
🔗 प्लेटफ़ॉर्म-विशिष्ट कॉलबैक हैंडलिंग
सभी प्लेटफ़ॉर्म (एकीकृत middleware सिस्टम)
- एक redirect URI:
https://yourdomain.com/api/oauth/redirect?scheme=YOUR_APP_SCHEME - डायनेमिक स्कीम: हर गेम अपनी URI स्कीम इस्तेमाल कर सकता है
- प्लेटफ़ॉर्म पहचान: अपने आप पहचान और रूटिंग
- सार्वभौमिक सपोर्ट: डेस्कटॉप, मोबाइल और WebGL पर चलता है
मोबाइल प्लेटफ़ॉर्म (Android, iOS, Windows, UWP)
- डीप लिंकिंग: कस्टम URI स्कीम (
YOUR_APP_SCHEME://patreon-callback) - Middleware रीडायरेक्ट:
https://yourdomain.com/api/oauth/redirect→ डीप लिंक - सिस्टम ब्राउज़र: ऐप पर अपने आप वापसी के साथ नेटिव OAuth फ़्लो
- State वैलिडेशन: state पैरामीटर के साथ CSRF सुरक्षा
WebGL प्लेटफ़ॉर्म
- Middleware फ़्लो: इस्तेमाल करता है
https://yourdomain.com/api/oauth/redirect - JavaScript कॉलबैक: पैरेंट विंडो के साथ
postMessageसंचार - सर्वर की ज़रूरत नहीं: होस्टेड middleware सेवा इस्तेमाल करता है
- CORS सपोर्ट: क्रॉस-ओरिजिन अनुरोधों का प्रबंधन
डेस्कटॉप प्लेटफ़ॉर्म (Windows, Mac, Linux)
- Middleware रीडायरेक्ट:
https://yourdomain.com/api/oauth/redirect→localhost:3000 - एम्बेडेड सर्वर: HTTP Listener यहाँ:
localhost:3000 - लूपबैक फ़्लो: ब्राउज़र → middleware → localhost → ऐप कॉलबैक
- कोई डिपेंडेंसी नहीं: शुद्ध .NET HttpListener इम्प्लीमेंटेशन
📱 मोबाइल सेटअप की ज़रूरतें
Android सेटअप
Assets/Plugins/Android/में AndroidManifest.xml बनाएँ: ```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 हैंडलिंग
// WebGL middleware callback
PatreonWebGLHandler webGLHandler = GetComponent<PatreonWebGLHandler>();
webGLHandler.StartPatreonOAuthFlow(clientId, state);
// Test WebGL callback
webGLHandler.TestWebGLCallback();
प्लेटफ़ॉर्म जानकारी
// 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 Platform OAuth Flow: प्लेटफ़ॉर्म-विशिष्ट OAuth फ़्लो टेस्ट करता हैTest Deep Link Callback: मोबाइल डीप लिंक हैंडलिंग टेस्ट करता हैTest WebGL Callback: WebGL middleware हैंडलिंग टेस्ट करता हैShow Platform Info: मौजूदा प्लेटफ़ॉर्म की जानकारी दिखाता है
टेस्ट स्क्रिप्ट
PatreonCallbackManager: प्लेटफ़ॉर्म-विशिष्ट टेस्टिंगPatreonDeepLinkHandler: मोबाइल डीप लिंक टेस्टिंगPatreonWebGLHandler: WebGL middleware टेस्टिंगPatreonMobileTest: मोबाइल संगतता टेस्टिंग
सुरक्षा टेस्टिंग
प्लगइन में एक व्यापक सुरक्षा टेस्टिंग सिस्टम है:
1. Security Test कंपोनेंट जोड़ें
// Add PatreonSecurityTest component to any GameObject
// Right-click on GameObject → Add Component → PatreonSecurityTest
2. सुरक्षा टेस्ट चलाएँ
// In Inspector, click "Run All Security Tests" or use code:
var securityTest = GetComponent<PatreonSecurityTest>();
securityTest.RunAllTests();
3. कंपोनेंट्स को अलग-अलग टेस्ट करें
// Test encryption only
securityTest.TestEncryption();
// Test obfuscation only
securityTest.TestObfuscation();
// Test secure storage only
securityTest.TestSecureStorage();
// Performance test
securityTest.PerformanceTest();
4. सुरक्षा जाँच
// Validate entire security system
bool isValid = PatreonSecurity.PatreonSecurity.ValidateSecuritySystem();
Debug.Log($"Security system valid: {isValid}");
सपोर्ट
मदद पाएँ
अगर कोई समस्या आए या आपका कोई सवाल हो:
- डॉक्यूमेंटेशन देखें - ज़्यादातर आम समस्याएँ यहाँ बताई गई हैं
- हमारी Discord कम्युनिटी से जुड़ें - दूसरे डेवलपर्स और हमारी टीम से मदद पाएँ
- सपोर्ट से संपर्क करें - तकनीकी समस्याओं के लिए ये जानकारी भेजें:
- Unity वर्ज़न
- प्लगइन वर्ज़न
- समस्या दोहराने के स्टेप
- एरर संदेश
- लॉग फ़ाइलें
कम्युनिटी
सपोर्ट और अपडेट के लिए हमारी कम्युनिटी से जुड़ें:
- ईमेल: [email protected]
- Discord: हमारी कम्युनिटी से जुड़ें
- YouTube: DryreL Hub
- YouTube #2: DryreL Software
अपडेट
नए फ़ीचर्स और बग फ़िक्स से अपडेट रहें:
- Unity Asset Store: Marketplace से डाउनलोड करें (जल्द उपलब्ध)
- Discord कम्युनिटी: सपोर्ट और अपडेट के लिए DryreL Hub Discord से जुड़ें
अस्वीकरण और दायित्व
ज़रूरी सुरक्षा सूचना
यह प्लगइन आपके Patreon API क्रेडेंशियल्स की सुरक्षा में मदद के लिए AES-256 एन्क्रिप्शन और ऑब्फ़स्केशन देता है। लेकिन अपने क्रेडेंशियल्स की सुरक्षा और उनके उजागर होने से होने वाले किसी भी नतीजे के लिए आप पूरी तरह ज़िम्मेदार हैं।
दिए गए सुरक्षा फ़ीचर्स
- AES-256 एन्क्रिप्शन: Client Secret की सुरक्षा के लिए
- XOR ऑब्फ़स्केशन: Client ID को ऑब्फ़स्केट करने के लिए
- मल्टी-लेयर की डेरिवेशन: प्लेटफ़ॉर्म-विशिष्ट एन्क्रिप्शन कीज़
- छेड़छाड़ से सुरक्षा: बुनियादी अखंडता जाँच
- सुरक्षा ऑडिट लॉगिंग: निगरानी और डीबगिंग टूल
आपकी ज़िम्मेदारियाँ
- सुरक्षित स्टोरेज:
PatreonConfigको कभी वर्ज़न कंट्रोल में कमिट न करें - सही इस्तेमाल: इस डॉक्यूमेंटेशन के सभी सुरक्षा दिशानिर्देश मानें
- नियमित अपडेट: क्रेडेंशियल्स अपडेट रखें और समय-समय पर बदलें
- एनवायरनमेंट सुरक्षा: पक्का करें कि आपके डेवलपमेंट और प्रोडक्शन एनवायरनमेंट सुरक्षित हैं
- एक्सेस कंट्रोल: क्रेडेंशियल फ़ाइलों और बिल्ड आर्टिफ़ैक्ट्स तक पहुँच सीमित करें
दायित्व अस्वीकरण
DRYREL HUB ज़िम्मेदार नहीं होगा किसी भी प्रत्यक्ष, अप्रत्यक्ष, आकस्मिक, विशेष, परिणामी या दंडात्मक नुकसान के लिए, जिसमें ये शामिल हैं पर इन्हीं तक सीमित नहीं:
- आर्थिक नुकसान: आय का नुकसान, कारोबार में रुकावट या आर्थिक क्षति
- सुरक्षा उल्लंघन: आपके Patreon अकाउंट या डेटा तक अनधिकृत पहुँच
- API का दुरुपयोग: तीसरे पक्ष द्वारा आपके क्रेडेंशियल्स का दुरुपयोग
- डेटा उजागर होना: संवेदनशील जानकारी का लीक होना
- सेवा में रुकावट: डाउनटाइम या सेवा उपलब्ध न होना
- कानूनी नतीजे: क्रेडेंशियल्स उजागर होने से होने वाली कोई भी कानूनी समस्या
इस प्लगइन का इस्तेमाल अपने जोखिम पर करें। कोई वारंटी नहीं दी जाती।
🔧 API V2: अकाउंट टाइप की समस्याएँ और समाधान
⚠️ अलग-अलग अकाउंट टाइप के साथ ज्ञात समस्याएँ
अलग-अलग Patreon अकाउंट टाइप (क्रिएटर बनाम सामान्य यूज़र) से टेस्ट करते समय ये समस्याएँ आ सकती हैं:
1. ईमेल नहीं मिल रहा
- समस्या: सामान्य यूज़र्स के लिए ईमेल फ़ील्ड ख़ाली आता है
- कारण: OAuth स्कोप की सीमाएँ
- समाधान: बढ़ाए गए OAuth स्कोप में अब ये शामिल हैं
identity[email]
2. प्रोफ़ाइल इमेज नहीं मिल रही
- समस्या: प्रोफ़ाइल इमेज URL ख़ाली है
- कारण: API फ़ील्ड मैपिंग में अंतर
- समाधान:
image_urlख़ाली हो तो अपने आपthumb_urlइस्तेमाल होता है
3. टियर/स्थिति की ग़लत जानकारी
- समस्या: सामान्य यूज़र्स “creator” टियर में दिखते हैं
- कारण: अकाउंट टाइप के बीच API जवाबों में असंगति
- समाधान: बेहतर लॉगिंग और वैलिडेशन (console चेतावनियाँ देखें)
4. सोशल लिंक नहीं मिल रहे
- समस्या: YouTube, Twitter, Facebook लिंक ख़ाली हैं
- कारण: सामान्य यूज़र्स के लिए API फ़ील्ड तक सीमित पहुँच
- समाधान: API कॉल में बढ़ाए गए फ़ील्ड अनुरोध
🔍 डीबग जानकारी
प्लगइन में अब विस्तृत डीबग लॉगिंग है। Unity Console में देखें:
🔧 === USER DATA DEBUG ===- यूज़र डेटा का पूरा विश्लेषण🔧 Email not available- स्कोप सीमा की चेतावनियाँ🔧 Normal user has tier_title- अकाउंट टाइप की असंगतियाँ
📋 टेस्टिंग चेकलिस्ट
अलग-अलग अकाउंट टाइप से टेस्ट करते समय:
- क्रिएटर अकाउंट टेस्ट:
- ✅ ईमेल मिलना चाहिए
- ✅ प्रोफ़ाइल इमेज मिलनी चाहिए
- ✅ टियर जानकारी सही होनी चाहिए
- ✅ सोशल लिंक उपलब्ध हो सकते हैं
- सामान्य यूज़र अकाउंट टेस्ट:
- ⚠️ ईमेल उपलब्ध न हो (स्कोप पर निर्भर)
- ✅ प्रोफ़ाइल इमेज मिलनी चाहिए (फ़ॉलबैक के साथ)
- ⚠️ टियर जानकारी ग़लत हो सकती है (चेतावनी के रूप में लॉग होती है)
- ⚠️ सोशल लिंक उपलब्ध न हों
🛠️ बढ़ाए गए OAuth स्कोप
प्लगइन अब बढ़ाए गए स्कोप माँगता है:
identity identity[email] identity.memberships campaigns
इससे अलग-अलग अकाउंट टाइप में यूज़र डेटा तक बेहतर पहुँच मिलती है।
🔧 API डेटा वैलिडेशन और सुधार
ज़रूरी नोट: प्लगइन में Patreon API V2 की ज्ञात असंगतियों के लिए क्लाइंट-साइड डेटा वैलिडेशन और सुधार शामिल हैं। यह ज़रूरी है क्योंकि:
- API डेटा समस्याएँ: Patreon API V2 कभी-कभी सामान्य यूज़र्स के लिए ग़लत डेटा देता है (जैसे सामान्य यूज़र को “Creator” टियर दिखाना)
- डेटा में विरोधाभास: API परस्पर विरोधी मान दे सकता है (जैसे
patron_status: "not_patron"लेकिनis_patron: true) - अकाउंट टाइप का मिल जाना: API जवाबों में यूज़र और क्रिएटर डेटा कभी-कभी मिल जाते हैं
- फ़ॉलोअर स्थिति की समस्याएँ:
is_followerफ़ील्ड भरोसेमंद नहीं है और यूज़र के फ़ॉलो करने पर भीfalseदे सकता है
प्लगइन क्या करता है:
- ✅ API से आया सारा यूज़र डेटा वैलिडेट करता है
- ✅ ज्ञात डेटा असंगतियाँ अपने आप ठीक करता है
- ✅ डीबगिंग के लिए API समस्याएँ लॉग करता है
- ✅ ज़रूरत पड़ने पर फ़ॉलबैक मान देता है
- ✅ इन जैसे अविश्वसनीय फ़ील्ड के बारे में चेताता है:
is_follower
देखने लायक Console लॉग:
🔧 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
ज्ञात API सीमाएँ:
is_follower: यह फ़ील्ड Patreon API V2 में भरोसेमंद नहीं है और यूज़र के क्रिएटर को फ़ॉलो करने पर भीfalseदे सकता है- फ़ॉलोअर पहचान: फ़ॉलोअर्स को सही पहचानने के लिए campaigns/pledges एंडपॉइंट पर अतिरिक्त API कॉल ज़रूरी हैं
- संदर्भ: फ़ॉलोअर पहचानने के सही तरीकों के लिए Patreon API Guide देखें
यह तरीका API की असंगतियों के बावजूद भरोसेमंद यूज़र डेटा पक्का करता है।
धन्यवाद!
Patreon Authenticator for Unity इस्तेमाल करने के लिए धन्यवाद। हमें उम्मीद है कि यह प्लगइन आपके Patreon सपोर्टर्स के लिए शानदार अनुभव बनाने में मदद करेगा!

