Google Play की गेम सेवाओं का इस्तेमाल करके, Unity में पुष्टि करें

Firebase और Unity पर बने Android गेम में खिलाड़ियों को साइन इन करने के लिए, Google Play Games की सेवाओं का इस्तेमाल किया जा सकता है. Firebase से साइन इन करने के लिए, Google Play Games की सेवाओं का इस्तेमाल करने के लिए, सबसे पहले Google Play Games पर प्लेयर में साइन इन करें. इसके बाद, OAuth 2.0 ऑथराइज़ेशन कोड का अनुरोध करें. इसके बाद, Firebase क्रेडेंशियल जनरेट करने के लिए, PlayGamesAuthProvider को ऑथराइज़ेशन कोड पास करें. इसका इस्तेमाल, Firebase से पुष्टि करने के लिए किया जा सकता है.

वेब कंटेनर इंस्टॉल करने से पहले

अपना Unity प्रोजेक्ट सेट अप करें

  1. Firebase को अपने Unity प्रोजेक्ट में जोड़ने का तरीका जानने के लिए, अपने Unity प्रोजेक्ट में Firebase कॉन्फ़िगरेशन फ़ाइल और Firebase यूनिटी SDK जोड़ें. Android के लिए निर्देशों का पालन करें.

    FirebaseAuth.unitypackage को इंपोर्ट करना न भूलें.

  2. Unity एडिटर में, बिल्ड सेटिंग > प्लेयर की सेटिंग > अन्य सेटिंग में जाकर, अपने गेम के Android पैकेज का नाम सेट करें.

  3. इसके बाद, बिल्ड सेटिंग > प्लेयर की सेटिंग > पब्लिश करने की सेटिंग में जाकर, कोई कीस्टोर और की चुनें या बनाएं. इनका इस्तेमाल आपके Android पैकेज पर साइन करने के लिए किया जाएगा. Play Games में साइन इन करने के लिए ज़रूरी है कि आपके APK पर साइन इन किया गया हो. यह ज़रूरी शर्त सिर्फ़ पब्लिश करने के लिए ही नहीं, बल्कि गेम को डेवलप करने के दौरान भी लागू होती है.

अपना Firebase प्रोजेक्ट सेट अप करना

  1. Firebase कंसोल में, उस Firebase प्रोजेक्ट पर जाएं जिसमें आपने अपना Unity प्रोजेक्ट रजिस्टर किया है.

  2. Unity में सेट की गई कुंजी का इस्तेमाल करके, Firebase कंसोल के सेटिंग पेज से अपने गेम का SHA-1 फ़िंगरप्रिंट सेट करें.

    आप keytool निर्देश से अपनी कुंजी का SHA-1 फ़िंगरप्रिंट पा सकते हैं:

    keytool -exportcert -list -v \
        -alias YOUR-KEY-NAME -keystore PATH-TO-KEYSTORE

    इसके अलावा, आप gradle signingReport कमांड के साथ अपने साइनिंग सर्टिफ़िकेट का SHA हैश पा सकते हैं:

    gradlew signingReport

    आपके APK पर इस पासकोड से साइन किया जाना चाहिए. इसमें डेवलपमेंट के दौरान भी हस्ताक्षर होना चाहिए.

  3. Google Play Games को साइन इन की सेवा देने वाली कंपनी के तौर पर चालू करें:

    1. Firebase कंसोल में, पुष्टि करने की सुविधा सेक्शन खोलें.

    2. अपने प्रोजेक्ट का वेब सर्वर क्लाइंट आईडी और क्लाइंट सीक्रेट जनरेट करें और पाएं:

      1. साइन इन करने का तरीका टैब में, Google साइन इन करने की सेवा देने वाली कंपनी को चालू करें.

      2. Google साइन इन करने वाली कंपनी से वेब सर्वर क्लाइंट आईडी और सीक्रेट कॉपी करें.

    3. साइन इन करने का तरीका टैब में, Play Games में साइन-इन करने की सेवा देने वाली कंपनी को चालू करें. इसके बाद, अपने प्रोजेक्ट के वेब सर्वर क्लाइंट आईडी और क्लाइंट सीक्रेट की जानकारी दें, जो आपको आखिरी चरण में मिला था.

अपने Firebase ऐप्लिकेशन की जानकारी के साथ Play की गेम सेवाओं को कॉन्फ़िगर करें

  1. Google Play Console में जाकर, अपना Google Play ऐप्लिकेशन खोलें या नया ऐप्लिकेशन बनाएं.

  2. बढ़ाएं सेक्शन में जाकर, Play की गेम सेवाएं > सेटअप और मैनेजमेंट > कॉन्फ़िगरेशन पर क्लिक करें.

  3. हां, मेरे गेम में पहले से ही Google API का इस्तेमाल हो रहा है पर क्लिक करें. इसके बाद, सूची से अपना Firebase प्रोजेक्ट चुनें और इस्तेमाल करें पर क्लिक करें.

  4. Play की गेम सेवाओं के कॉन्फ़िगरेशन पेज पर, क्रेडेंशियल जोड़ें पर क्लिक करें.

    1. गेम सर्वर टाइप चुनें.
    2. OAuth क्लाइंट फ़ील्ड में, अपने प्रोजेक्ट का वेब क्लाइंट आईडी चुनें. पक्का करें कि यह वही क्लाइंट आईडी है जिसे आपने Play Games में साइन इन करने की सुविधा चालू करते समय डाला था.
    3. बदलावों को सेव करें.
  5. अब भी Play की गेम सेवाओं के कॉन्फ़िगरेशन पेज पर जाकर, क्रेडेंशियल जोड़ें पर फिर से क्लिक करें.

    1. Android टाइप चुनें.
    2. OAuth क्लाइंट फ़ील्ड में, अपने प्रोजेक्ट का Android क्लाइंट आईडी चुनें. (अगर आपको अपना Android क्लाइंट आईडी नहीं दिखता है, तो पक्का करें कि आपने Firebase कंसोल में अपने गेम का SHA-1 फ़िंगरप्रिंट सेट किया हो.)
    3. बदलावों को सेव करें.
  6. इवेंट, उपलब्धियां, और लीडरबोर्ड पेजों पर, Play Games के ऐसे सभी संसाधन बनाएं जिनका इस्तेमाल आपको अपने गेम के साथ करना है. अगर आपको तुरंत किसी भी गेम का इस्तेमाल नहीं करना है, तो प्लेसहोल्डर एंट्री बनाई जा सकती है. इसके बाद, किसी भी इवेंट, उपलब्धियां या लीडरबोर्ड पेज पर, संसाधन पाएं पर क्लिक करें और 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>
    
  7. टेस्टर पेज पर, उन सभी उपयोगकर्ताओं के ईमेल पते जोड़ें जो Play Store पर गेम को रिलीज़ करने से पहले उसमें साइन इन करना चाहते हैं.

अपने गेम में, Play Games में साइन इन करने की सुविधा इंटिग्रेट करें

  1. Unity के लिए उपलब्ध Play Games प्लगिन की सबसे नई रिलीज़ डाउनलोड करें और इसे एक्सट्रैक्ट करें.

  2. प्लगिन के Unity पैकेज को अपने Unity प्रोजेक्ट में इंपोर्ट करें. Unity पैकेज को रिलीज़ संग्रह की current-build डायरेक्ट्री में देखा जा सकता है.

  3. Play Games प्लगिन को सेट अप करें:

    1. Android कॉन्फ़िगरेशन स्क्रीन खोलने के लिए, विंडो > Google Play Games > सेटअप > Android सेटअप पर क्लिक करें.
    2. Play Console से मिले Android के संसाधनों के स्निपेट को संसाधनों की परिभाषा फ़ील्ड में चिपकाएं.
    3. अपने उस वेब सर्वर क्लाइंट आईडी को क्लाइंट आईडी फ़ील्ड में चिपकाएं जो आपने Firebase कंसोल में Play Games में साइन इन करने की सुविधा चालू करते समय दिया था.
    4. सेटअप पर क्लिक करें.
  4. अपने गेम में, किसी 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();
    
  5. इसके बाद, जब कोई खिलाड़ी Play Games से साइन इन करने का विकल्प चुनता है, तो Social.localUser.Authenticate() को कॉल करें:

    Social.localUser.Authenticate((bool success) => {
      // handle success or failure
    });
    

Firebase की मदद से पुष्टि करें

अपने गेम में Play Games में साइन इन करने के बाद, Firebase से पुष्टि करने के लिए Play Games services से मिला ऑथराइज़ेशन कोड का इस्तेमाल किया जा सकता है.

  1. जब खिलाड़ी Play Games से साइन इन कर ले, तब साइन इन करने की प्रोसेस को जारी रखने वाले हैंडलर में, खिलाड़ी के खाते के लिए पुष्टि करने का कोड पाएं:

    Social.localUser.Authenticate((bool success) => {
      if (success) {
        authCode = PlayGamesPlatform.Instance.GetServerAuthCode();
      }
    });
    
  2. इसके बाद, Play Games सेवाओं से मिले ऑथराइज़ेशन कोड को 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 यूआईडी हासिल किया जा सकता है:

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();