Google Play की गेम सेवाओं का इस्तेमाल करके, Firebase और Unity पर बनाए गए Android गेम में खिलाड़ियों को साइन इन किया जा सकता है. Firebase के साथ Google Play Games सेवाओं के साइन-इन का इस्तेमाल करने के लिए, पहले खिलाड़ी को Google Play Games के साथ साइन इन करें. इसके बाद, ऐसा करते समय OAuth 2.0 ऑथराइज़ेशन कोड का अनुरोध करें. फिर, PlayGamesAuthProvider को ऑथराइज़ेशन कोड पास करें, ताकि Firebase क्रेडेंशियल जनरेट किया जा सके. इस क्रेडेंशियल का इस्तेमाल, Firebase के साथ पुष्टि करने के लिए किया जा सकता है.
शुरू करने से पहले
अपना Unity प्रोजेक्ट सेट अप करना
अपने Unity प्रोजेक्ट में Firebase जोड़ना लेख में दिए गए तरीके से, अपने Unity प्रोजेक्ट में 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 प्लगिन सेट अप करें:
- विंडो > Google Play Games > सेटअप > Android सेटअप पर क्लिक करके, Android कॉन्फ़िगरेशन स्क्रीन खोलें.
- 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 की गेम सेवाओं से मिले ऑथराइज़ेशन कोड का इस्तेमाल करके, 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.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;
}
Firebase Realtime Database और Cloud Storage की सुरक्षा से जुड़े नियमों में, साइन इन किए हुए उपयोगकर्ता का यूनीक आईडी पाया जा सकता है. इसके लिए, auth वैरिएबल का इस्तेमाल करें. इसका इस्तेमाल यह कंट्रोल करने के लिए किया जा सकता है कि कोई उपयोगकर्ता किस डेटा को ऐक्सेस कर सकता है.
किसी उपयोगकर्ता की Play Games प्लेयर की जानकारी पाने या Play की गेम सेवाओं को ऐक्सेस करने के लिए, Play Games प्लगिन की ओर से उपलब्ध कराए गए एपीआई का इस्तेमाल करें.
किसी उपयोगकर्ता को साइन आउट करने के लिए, SignOut() को कॉल करें:
auth.SignOut();