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

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

शुरू करने से पहले

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

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

    FirebaseAuth.unitypackage को ज़रूर इंपोर्ट करें.

  2. Unity Editor में, बिल्ड सेटिंग > प्लेयर सेटिंग > अन्य सेटिंग में जाकर, अपने गेम के 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

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

    gradlew signingReport

    आपके APK पर इस कुंजी से हस्ताक्षर किए जाने चाहिए. इसमें, ऐप्लिकेशन को डेवलप करने के दौरान भी हस्ताक्षर करना ज़रूरी है.

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

    1. Firebase कंसोल में, Authentication सेक्शन खोलें.

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

      1. साइन इन करने का तरीका टैब में, साइन इन करने के लिए Google की सुविधा चालू करें.

      2. Google साइन-इन की सुविधा देने वाली कंपनी से, वेब सर्वर क्लाइंट आईडी और सीक्रेट को कॉपी करें.

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

Play Games services को अपने Firebase ऐप्लिकेशन की जानकारी के साथ कॉन्फ़िगर करना

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

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

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

  4. Play Games services कॉन्फ़िगरेशन पेज पर, क्रेडेंशियल जोड़ें पर क्लिक करें.

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

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

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

  1. Unity के लिए Play Games प्लग इन का नया वर्शन डाउनलोड करें और उसे अनपैक करें.

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

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

    1. Android कॉन्फ़िगरेशन स्क्रीन खोलने के लिए, विंडो > Google Play Games > सेटअप > Android सेटअप पर क्लिक करें.
    2. Play Console से मिला Android संसाधन स्निपेट, संसाधनों की परिभाषा फ़ील्ड में चिपकाएं.
    3. Firebase कंसोल में Play Games से साइन इन करने की सुविधा चालू करते समय, आपने जो वेब सर्वर क्लाइंट आईडी दिया था उसे क्लाइंट आईडी फ़ील्ड में चिपकाएं.
    4. सेटअप पर क्लिक करें.
  4. अपने गेम में, RequestServerAuthCode सेटिंग चालू करके Play Games क्लाइंट को कॉन्फ़िगर करें:

    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 की सेवाओं से मिले ऑथराइज़ेशन कोड का इस्तेमाल किया जा सकता है.

  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 UID पाने के लिए, 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();