Google Play की गेम सेवाओं का इस्तेमाल करके, Firebase और Unity पर बनाए गए Android गेम में खिलाड़ियों को साइन इन कराया जा सकता है. Firebase के साथ Google Play की गेम सेवाओं के साइन-इन का इस्तेमाल करने के लिए, पहले खिलाड़ी को Google Play की गेम सेवाओं से साइन इन कराएं. इसके बाद, साइन इन करते समय OAuth 2.0 ऑथराइज़ेशन कोड का अनुरोध करें. फिर, ऑथराइज़ेशन कोड को PlayGamesAuthProvider को पास करें, ताकि Firebase क्रेडेंशियल जनरेट किया जा सके. इस क्रेडेंशियल का इस्तेमाल, Firebase के साथ पुष्टि करने के लिए किया जा सकता है.
शुरू करने से पहले
अपना Unity प्रोजेक्ट सेट अप करना
अपने यूनिटी प्रोजेक्ट में Firebase जोड़ना लेख में दिए गए निर्देशों के मुताबिक, अपने यूनिटी प्रोजेक्ट में Firebase कॉन्फ़िगरेशन फ़ाइल और Firebase Unity SDK टूल जोड़ें. Android के लिए दिए गए निर्देशों का पालन करें.
FirebaseAuth.unitypackageको इंपोर्ट करना न भूलें.Unity Editor में, Build Settings > Player Settings > Other Settings में जाकर, अपने गेम के Android पैकेज का नाम सेट करें.
इसके बाद, Build Settings > Player Settings > Publishing Settings में जाकर, एक कीस्टोर और पासकोड चुनें या बनाएं. इसका इस्तेमाल आपके Android पैकेज पर हस्ताक्षर करने के लिए किया जाएगा. Play Games में साइन इन करने की सुविधा काम करे, इसके लिए आपके APK पर हस्ताक्षर होना ज़रूरी है. यह ज़रूरी शर्त, सिर्फ़ पब्लिश करने के लिए नहीं, बल्कि गेम को डेवलप करने के दौरान भी लागू होती है.
अपना Firebase प्रोजेक्ट सेट अप करना
Firebase कंसोल में, उस Firebase प्रोजेक्ट पर जाएं जिसमें आपने अपना Unity प्रोजेक्ट रजिस्टर किया है.
अपने गेम का SHA-1 फ़िंगरप्रिंट डालें.
Firebase कंसोल में,
सेटिंग > सामान्य टैब पर जाएं.नीचे की ओर स्क्रोल करके आपके ऐप्लिकेशन कार्ड पर जाएं. इसके बाद, अपना Android ऐप्लिकेशन चुनें और SHA सर्टिफ़िकेट फ़िंगरप्रिंट फ़ील्ड में अपना SHA-1 फ़िंगरप्रिंट जोड़ें.
keytoolकमांड की मदद से, अपनी कुंजी का SHA-1 फ़िंगरप्रिंट पाया जा सकता है:keytool -exportcert -list -v \ -alias YOUR-KEY-NAME -keystore PATH-TO-KEYSTOREइसके अलावा, gradle
signingReportकमांड का इस्तेमाल करके, अपने हस्ताक्षर वाले सर्टिफ़िकेट का SHA हैश भी पाया जा सकता है:gradlew signingReport
अपने ऐप्लिकेशन के SHA फ़िंगरप्रिंट को पाने के तरीके के बारे में जानने के लिए, अपने क्लाइंट की पुष्टि करना लेख पढ़ें.
आपके APK पर इस कुंजी से हस्ताक्षर किए जाने चाहिए. इसमें डेवलपमेंट के दौरान भी ऐसा करना ज़रूरी है.
साइन-इन करने की सुविधा देने वाली कंपनी के तौर पर Google Play Games को चालू करें:
Firebase console में, Security > Authentication पर जाएं.
अपने प्रोजेक्ट का वेब सर्वर क्लाइंट आईडी और क्लाइंट सीक्रेट जनरेट करें और पाएं:
साइन-इन का तरीका टैब में, Google साइन-इन प्रोवाइडर को चालू करें.
Google साइन-इन सेवा देने वाली कंपनी से, वेब सर्वर क्लाइंट आईडी और सीक्रेट कॉपी करें.
साइन-इन करने का तरीका टैब में, Play Games साइन-इन प्रोवाइडर को चालू करें. इसके बाद, अपने प्रोजेक्ट का वेब सर्वर क्लाइंट आईडी और क्लाइंट सीक्रेट डालें. यह जानकारी आपको पिछले चरण में मिली थी.
अपने Firebase ऐप्लिकेशन की जानकारी के साथ Play Games services को कॉन्फ़िगर करें
Google Play Console में जाकर, अपना Google Play ऐप्लिकेशन खोलें या नया ऐप्लिकेशन बनाएं.
आगे बढ़ाएं सेक्शन में जाकर, Play Games services > सेटअप और मैनेजमेंट > कॉन्फ़िगरेशन पर क्लिक करें.
हां, मेरा गेम पहले से Google API का इस्तेमाल करता है पर क्लिक करें. इसके बाद, सूची से अपना Firebase प्रोजेक्ट चुनें और इस्तेमाल करें पर क्लिक करें.
Play Games services कॉन्फ़िगरेशन पेज पर, क्रेडेंशियल जोड़ें पर क्लिक करें.
- गेम सर्वर टाइप चुनें.
- OAuth क्लाइंट फ़ील्ड में, अपने प्रोजेक्ट का वेब क्लाइंट आईडी चुनें. पक्का करें कि यह वही क्लाइंट आईडी हो जिसे आपने Play Games साइन-इन की सुविधा चालू करते समय डाला था.
- बदलावों को सेव करें.
अब भी Play Games services कॉन्फ़िगरेशन पेज पर, क्रेडेंशियल जोड़ें पर फिर से क्लिक करें.
- Android टाइप चुनें.
- OAuth क्लाइंट फ़ील्ड में, अपने प्रोजेक्ट का Android क्लाइंट आईडी चुनें. (अगर आपको अपना Android क्लाइंट आईडी नहीं दिखता है, तो पक्का करें कि आपने Firebase कंसोल में अपने गेम का SHA-1 फ़िंगरप्रिंट सेट किया हो.)
- बदलावों को सेव करें.
इवेंट, उपलब्धियां, और लीडरबोर्ड पेजों पर, वे Play Games संसाधन बनाएं जिनका इस्तेमाल आपको अपने गेम में करना है. अगर आपको किसी संसाधन का इस्तेमाल तुरंत नहीं करना है, तो प्लेसहोल्डर एंट्री बनाई जा सकती है. इसके बाद, इवेंट, उपलब्धियां या लीडरबोर्ड पेज में से किसी एक पर, संसाधन पाएं पर क्लिक करें. साथ ही, Android संसाधन स्निपेट को किसी ऐसी जगह पर कॉपी करें जहां से उसे आसानी से ऐक्सेस किया जा सके. Google Play Games services प्लगिन सेट अप करने के लिए, आपको स्निपेट की ज़रूरत होगी.
संसाधन स्निपेट का उदाहरण यहां दिया गया है:
<?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 Games में साइन इन करने की सुविधा को इंटिग्रेट करना
Unity के लिए Play Games प्लगिन की नई रिलीज़ डाउनलोड करें और उसे एक्सट्रैक्ट करें.
प्लगिन के Unity पैकेज को अपने Unity प्रोजेक्ट में इंपोर्ट करें. आपको Unity पैकेज, रिलीज़ के संग्रह की
current-buildडायरेक्ट्री में मिलेगा.Play Games प्लगिन सेट अप करें:
- Android कॉन्फ़िगरेशन स्क्रीन खोलने के लिए, Window > Google Play Games > Setup > Android Setup पर क्लिक करें.
- Play Console से मिले Android संसाधनों के स्निपेट को संसाधन की परिभाषा फ़ील्ड में चिपकाएं.
- Firebase कंसोल में Play Games से साइन इन करने की सुविधा चालू करते समय, आपने जो वेब सर्वर क्लाइंट आईडी दिया था उसे क्लाइंट आईडी फ़ील्ड में चिपकाएं.
- सेटअप पर क्लिक करें.
अपने गेम में, Play Games क्लाइंट को
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();इसके बाद, जब कोई खिलाड़ी Play Games से साइन इन करने का विकल्प चुनता है, तब
Social.localUser.Authenticate()को कॉल करें:Social.localUser.Authenticate((bool success) => { // handle success or failure });
Firebase की मदद से पुष्टि करना
अपने गेम में Play Games की साइन-इन सुविधा जोड़ने के बाद, Play Games की सेवाओं से मिले ऑथराइज़ेशन कोड का इस्तेमाल करके, Firebase से पुष्टि की जा सकती है.
जब कोई खिलाड़ी Play Games का इस्तेमाल करके सफलतापूर्वक साइन इन कर लेता है, तो साइन-इन जारी रखने वाले हैंडलर में, खिलाड़ी के खाते के लिए ऑथराइज़ेशन कोड पाएं:
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 Games आईडी से लिंक किया जाता है. यह नया खाता, आपके Firebase प्रोजेक्ट के हिस्से के तौर पर सेव किया जाता है. इसका इस्तेमाल, आपके प्रोजेक्ट के हर ऐप्लिकेशन में किसी उपयोगकर्ता की पहचान करने के लिए किया जा सकता है.
अपने गेम में, उपयोगकर्ता का Firebase यूआईडी, Firebase.Auth.FirebaseUser ऑब्जेक्ट से पाया जा सकता है:
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;
}
Firebase रीयलटाइम डेटाबेस और Cloud Storage के सुरक्षा नियमों में, साइन इन किए हुए उपयोगकर्ता का यूनीक आईडी auth वैरिएबल से पाया जा सकता है. इसका इस्तेमाल यह कंट्रोल करने के लिए किया जा सकता है कि कोई उपयोगकर्ता किस डेटा को ऐक्सेस कर सकता है.
किसी उपयोगकर्ता की Play Games प्लेयर की जानकारी पाने या Play Games सेवाओं को ऐक्सेस करने के लिए, Play Games प्लगिन की ओर से उपलब्ध कराए गए एपीआई का इस्तेमाल करें.
किसी उपयोगकर्ता को साइन आउट करने के लिए, SignOut() को कॉल करें:
auth.SignOut();