आप Firebase और Unity पर निर्मित Android गेम में खिलाड़ियों को साइन इन करने के लिए Google Play गेम्स सेवाओं का उपयोग कर सकते हैं। Firebase के साथ Google Play गेम्स सेवाओं के साइन-इन का उपयोग करने के लिए, पहले Google Play गेम्स के साथ प्लेयर में साइन इन करें, और ऐसा करने पर OAuth 2.0 प्रमाणीकरण कोड का अनुरोध करें। फिर, Firebase क्रेडेंशियल जनरेट करने के लिए PlayGamesAuthProvider
को प्रमाणन कोड पास करें, जिसका उपयोग आप Firebase के साथ प्रमाणित करने के लिए कर सकते हैं।
शुरू करने से पहले
अपनी एकता परियोजना स्थापित करें
Firebase कॉन्फ़िग फ़ाइल और Firebase यूनिटी SDK को अपने यूनिटी प्रोजेक्ट में जोड़ें जैसा कि Add Firebase to your Unity project में बताया गया है। Android के लिए निर्देशों का पालन करें।
FirebaseAuth.unitypackage
आयात करना सुनिश्चित करें।एकता संपादक में, बिल्ड सेटिंग > प्लेयर सेटिंग > अन्य सेटिंग के अंतर्गत आपके गेम का Android पैकेज नाम सेट करें।
फिर, बिल्ड सेटिंग > प्लेयर सेटिंग > प्रकाशन सेटिंग के अंतर्गत, एक कीस्टोर और कुंजी चुनें या बनाएं, जिसका उपयोग आपके Android पैकेज पर हस्ताक्षर करने के लिए किया जाएगा। काम करने के लिए Play गेम्स साइन-इन के लिए आपका APK साइन इन होना चाहिए—यह आवश्यकता न केवल प्रकाशन के लिए लागू होती है, बल्कि आपके गेम के विकास के दौरान भी लागू होती है।
अपना फायरबेस प्रोजेक्ट सेट करें
फायरबेस कंसोल में, उस फायरबेस प्रोजेक्ट पर जाएं जिसमें आपने अपना यूनिटी प्रोजेक्ट पंजीकृत किया था।
एकता में आपके द्वारा सेट की गई कुंजी का उपयोग करके, फायरबेस कंसोल के सेटिंग पृष्ठ से अपने गेम का SHA-1 फ़िंगरप्रिंट सेट करें।
आप
keytool
कमांड के साथ अपनी कुंजी का SHA-1 फिंगरप्रिंट प्राप्त कर सकते हैं:keytool -exportcert -list -v \ -alias YOUR-KEY-NAME -keystore PATH-TO-KEYSTORE
वैकल्पिक रूप से, आप अपने हस्ताक्षर प्रमाणपत्र के SHA हैश को ग्रेडल
signingReport
कमांड के साथ प्राप्त कर सकते हैं:gradlew signingReport
आपका APK विकास के दौरान सहित, इस कुंजी से हस्ताक्षरित होना चाहिए।
साइन-इन प्रदाता के रूप में Google Play गेम्स को सक्षम करें:
फायरबेस कंसोल में, प्रमाणीकरण अनुभाग खोलें।
अपने प्रोजेक्ट का वेब सर्वर क्लाइंट आईडी और क्लाइंट सीक्रेट जनरेट करें और प्राप्त करें:
साइन इन विधि टैब के भीतर, Google साइन-इन प्रदाता को सक्षम करें।
Google साइन-इन प्रदाता से वेब सर्वर क्लाइंट आईडी और गुप्त कॉपी करें।
साइन इन विधि टैब के भीतर, Play गेम्स साइन-इन प्रदाता को सक्षम करें, और अपने प्रोजेक्ट की वेब सर्वर क्लाइंट आईडी और क्लाइंट रहस्य निर्दिष्ट करें, जो आपको अंतिम चरण में मिला था।
अपनी Firebase ऐप्लिकेशन जानकारी के साथ Play गेम्स सेवाएं कॉन्फ़िगर करें
Google Play कंसोल में, अपना Google Play ऐप खोलें या एक बनाएं।
आगे बढ़ें अनुभाग में, Play गेम्स सेवाएं > सेटअप और प्रबंधन > कॉन्फ़िगरेशन क्लिक करें.
हाँ क्लिक करें, मेरा गेम पहले से ही Google API का उपयोग करता है , सूची से अपना Firebase प्रोजेक्ट चुनें और फिर उपयोग करें क्लिक करें.
Play गेम्स सेवाओं के कॉन्फ़िगरेशन पृष्ठ पर, क्रेडेंशियल जोड़ें पर क्लिक करें।
- गेम सर्वर प्रकार का चयन करें।
- OAuth क्लाइंट फ़ील्ड में, अपने प्रोजेक्ट की वेब क्लाइंट आईडी चुनें। सुनिश्चित करें कि यह वही क्लाइंट आईडी है जिसे आपने प्ले गेम्स साइन-इन सक्षम करते समय निर्दिष्ट किया था।
- अपने परिवर्तन सहेजें।
अभी भी Play गेम्स सेवाओं के कॉन्फ़िगरेशन पृष्ठ पर, फिर से क्रेडेंशियल जोड़ें पर क्लिक करें।
- Android प्रकार का चयन करें।
- OAuth क्लाइंट फ़ील्ड में, अपने प्रोजेक्ट की Android क्लाइंट आईडी चुनें। (यदि आपको अपनी Android क्लाइंट आईडी दिखाई नहीं देती है, तो सुनिश्चित करें कि आपने अपने गेम का SHA-1 फ़िंगरप्रिंट Firebase कंसोल में सेट किया है।)
- अपने परिवर्तन सहेजें।
ईवेंट , उपलब्धियां और लीडरबोर्ड पेज पर, कोई भी Play गेम्स संसाधन बनाएं जिसे आप अपने गेम के साथ उपयोग करना चाहते हैं (यदि आप तुरंत किसी का उपयोग नहीं करना चाहते हैं, तो आप प्लेसहोल्डर प्रविष्टि बना सकते हैं)। फिर, किसी भी ईवेंट , उपलब्धियां या लीडरबोर्ड पेज पर, संसाधन प्राप्त करें पर क्लिक करें और Android संसाधनों के स्निपेट को कहीं भी सुविधाजनक रूप से कॉपी करें। Google Play - गेम्स सेवाएं प्लगइन स्थापित करने के लिए आपको स्निपेट की आवश्यकता होगी।
संसाधन स्निपेट निम्न उदाहरण जैसा दिखता है:
<?xml version="1.0" encoding="utf-8"?> <!-- Google Play game services IDs. Save this file as res/values/games-ids.xml in your project. --> <resources> <!-- app_id --> <string name="app_id" translatable="false">123456789000</string> <!-- package_name --> <string name="package_name" translatable="false">com.example.game</string> <!-- event Wiped Raid --> <string name="event_wiped_raid" translatable="false">CgkIpKjv1a4PEAIYBA</string> </resources>
परीक्षक पृष्ठ पर, ऐसे किसी भी उपयोगकर्ता के ईमेल पते जोड़ें, जिन्हें आपके गेम को Play Store पर रिलीज़ करने से पहले उसमें साइन इन करने में सक्षम होना आवश्यक है।
Play - गेम्स साइन-इन को अपने गेम में एकीकृत करें
यूनिटी के लिए प्ले गेम्स प्लगइन की नवीनतम रिलीज़ को डाउनलोड करें और इसे निकालें।
प्लगइन के यूनिटी पैकेज को अपने यूनिटी प्रोजेक्ट में आयात करें। आप एकता पैकेज को रिलीज़ आर्काइव की
current-build
निर्देशिका में पा सकते हैं।Play गेम्स प्लग इन सेट करें:
- Android कॉन्फ़िगरेशन स्क्रीन खोलने के लिए विंडो> Google Play गेम्स> सेटअप> Android सेटअप पर क्लिक करें।
- Play कंसोल से प्राप्त Android संसाधन स्निपेट को संसाधन परिभाषा फ़ील्ड में पेस्ट करें।
- अपने वेब सर्वर क्लाइंट आईडी को पेस्ट करें, जो आपने Firebase कंसोल में प्ले गेम्स साइन-इन को सक्षम करते समय क्लाइंट आईडी फ़ील्ड में प्रदान किया था।
- सेटअप पर क्लिक करें।
अपने गेम में, Play गेम्स क्लाइंट को
RequestServerAuthCode
सेटिंग सक्षम करके कॉन्फ़िगर करें:using GooglePlayGames; using GooglePlayGames.BasicApi; using UnityEngine.SocialPlatforms; using System.Threading.Tasks; PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder() .RequestServerAuthCode(false /* Don't force refresh */) .Build(); PlayGamesPlatform.InitializeInstance(config); PlayGamesPlatform.Activate();
फिर, जब कोई खिलाड़ी प्ले गेम्स के साथ साइन इन करना चुनता है, तो
Social.localUser.Authenticate()
पर कॉल करें:Social.localUser.Authenticate((bool success) => { // handle success or failure });
फायरबेस के साथ प्रमाणित करें
अपने गेम में Play गेम्स साइन-इन जोड़ने के बाद, आप Firebase के साथ प्रमाणित करने के लिए Play गेम्स सेवाओं के प्रमाणीकरण कोड का उपयोग कर सकते हैं।
खिलाड़ी द्वारा Play गेम्स का उपयोग करके सफलतापूर्वक साइन इन करने के बाद, साइन-इन निरंतरता हैंडलर में, खिलाड़ी के खाते के लिए प्रमाणीकरण कोड प्राप्त करें:
Social.localUser.Authenticate((bool success) => { if (success) { authCode = PlayGamesPlatform.Instance.GetServerAuthCode(); } });
फिर, Play गेम्स सेवाओं से एक Firebase क्रेडेंशियल के लिए प्राधिकरण कोड का आदान-प्रदान करें, और खिलाड़ी को प्रमाणित करने के लिए Firebase क्रेडेंशियल का उपयोग करें:
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance; Firebase.Auth.Credential credential = Firebase.Auth.PlayGamesAuthProvider.GetCredential(authCode); auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync encountered an error: " + task.Exception); return; } Firebase.Auth.AuthResult result = task.Result; Debug.LogFormat("User signed in successfully: {0} ({1})", result.User.DisplayName, result.User.UserId); });
अगले कदम
किसी उपयोगकर्ता द्वारा पहली बार साइन इन करने के बाद, एक नया उपयोगकर्ता खाता बनाया जाता है और उसकी Play गेम्स आईडी से लिंक किया जाता है। यह नया खाता आपके फायरबेस प्रोजेक्ट के हिस्से के रूप में संग्रहीत है, और इसका उपयोग आपके प्रोजेक्ट में प्रत्येक ऐप में उपयोगकर्ता की पहचान करने के लिए किया जा सकता है।
अपने गेम में, आप Firebase.Auth.FirebaseUser
ऑब्जेक्ट से उपयोगकर्ता का Firebase UID प्राप्त कर सकते हैं:
Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null && user.IsValid()) {
string playerName = user.DisplayName;
// The user's Id, unique to the Firebase project.
// Do NOT use this value to authenticate with your backend server, if you
// have one; use User.TokenAsync() instead.
string uid = user.UserId;
}
आपके फायरबेस रीयलटाइम डेटाबेस और क्लाउड स्टोरेज सुरक्षा नियमों में, आप auth
चर से साइन-इन किए गए उपयोगकर्ता की विशिष्ट उपयोगकर्ता आईडी प्राप्त कर सकते हैं, और इसका उपयोग यह नियंत्रित करने के लिए कर सकते हैं कि उपयोगकर्ता किस डेटा तक पहुंच सकता है।
किसी उपयोगकर्ता की Play गेम्स प्लेयर जानकारी प्राप्त करने या Play गेम्स सेवाओं तक पहुँचने के लिए, Play गेम्स प्लगइन द्वारा प्रदान किए गए API का उपयोग करें।
उपयोगकर्ता को साइन आउट करने के लिए, SignOut()
कॉल करें:
auth.SignOut();