Google Play गेम्स सेवाओं का उपयोग करके एकता में प्रमाणित करें

आप फायरबेस और यूनिटी पर निर्मित एंड्रॉइड गेम में खिलाड़ियों को साइन इन करने के लिए Google Play गेम्स सेवाओं का उपयोग कर सकते हैं। फायरबेस के साथ Google Play गेम्स सेवाओं के साइन-इन का उपयोग करने के लिए, पहले Google Play गेम्स के साथ प्लेयर में साइन इन करें, और ऐसा करने पर OAuth 2.0 प्रमाणीकरण कोड का अनुरोध करें। फिर, फ़ायरबेस क्रेडेंशियल जेनरेट करने के लिए PlayGamesAuthProvider को ऑथ कोड पास करें, जिसका उपयोग आप फ़ायरबेस के साथ प्रमाणित करने के लिए कर सकते हैं।

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

अपना यूनिटी प्रोजेक्ट सेट करें

  1. अपने यूनिटी प्रोजेक्ट में फायरबेस कॉन्फ़िगरेशन फ़ाइल और फायरबेस यूनिटी एसडीके जोड़ें जैसा कि अपने यूनिटी प्रोजेक्ट में फायरबेस जोड़ें में वर्णित है। Android के लिए निर्देशों का पालन करें.

    FirebaseAuth.unitypackage को आयात करना सुनिश्चित करें।

  2. यूनिटी एडिटर में, बिल्ड सेटिंग्स > प्लेयर सेटिंग्स > अन्य सेटिंग्स के तहत अपने गेम का एंड्रॉइड पैकेज नाम सेट करें।

  3. फिर, बिल्ड सेटिंग्स > प्लेयर सेटिंग्स > पब्लिशिंग सेटिंग्स के अंतर्गत, एक कीस्टोर और कुंजी चुनें या बनाएं, जिसका उपयोग आपके एंड्रॉइड पैकेज पर हस्ताक्षर करने के लिए किया जाएगा। काम करने के लिए Play गेम्स साइन-इन के लिए आपका एपीके साइन इन होना चाहिए - यह आवश्यकता न केवल प्रकाशन के लिए लागू होती है, बल्कि आपके गेम के विकास के दौरान भी लागू होती है।

अपना फायरबेस प्रोजेक्ट सेट करें

  1. फ़ायरबेस कंसोल में, फ़ायरबेस प्रोजेक्ट पर जाएँ जिसमें आपने अपना यूनिटी प्रोजेक्ट पंजीकृत किया था।

  2. यूनिटी में आपके द्वारा सेट की गई कुंजी का उपयोग करके, फायरबेस कंसोल के सेटिंग पेज से अपने गेम का SHA-1 फिंगरप्रिंट सेट करें।

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

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

    वैकल्पिक रूप से, आप ग्रेडल signingReport कमांड के साथ अपने हस्ताक्षर प्रमाणपत्र का SHA हैश प्राप्त कर सकते हैं:

    gradlew signingReport

    आपका एपीके इस कुंजी के साथ हस्ताक्षरित होना चाहिए, जिसमें विकास के दौरान भी शामिल है।

  3. Google Play गेम्स को साइन-इन प्रदाता के रूप में सक्षम करें:

    1. फायरबेस कंसोल में, प्रमाणीकरण अनुभाग खोलें।

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

      1. साइन इन विधि टैब के भीतर, Google साइन-इन प्रदाता को सक्षम करें।

      2. Google साइन-इन प्रदाता से वेब सर्वर क्लाइंट आईडी और रहस्य की प्रतिलिपि बनाएँ।

    3. साइन इन विधि टैब के भीतर, प्ले गेम्स साइन-इन प्रदाता को सक्षम करें, और अपने प्रोजेक्ट के वेब सर्वर क्लाइंट आईडी और क्लाइंट सीक्रेट को निर्दिष्ट करें, जो आपको अंतिम चरण में मिला था।

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

  1. Google Play कंसोल में, अपना Google Play ऐप खोलें या एक बनाएं।

  2. ग्रो अनुभाग में, प्ले गेम्स सेवाएँ > सेटअप और प्रबंधन > कॉन्फ़िगरेशन पर क्लिक करें।

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

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

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

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

प्ले गेम्स साइन-इन को अपने गेम में एकीकृत करें

  1. यूनिटी के लिए प्ले गेम्स प्लगइन की नवीनतम रिलीज़ डाउनलोड करें और इसे निकालें।

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

  3. प्ले गेम्स प्लगइन सेट करें:

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

    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 गेम्स के साथ साइन इन करना चुनता है, तो Social.localUser.Authenticate() पर कॉल करें:

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

फायरबेस से प्रमाणित करें

अपने गेम में Play गेम्स साइन-इन जोड़ने के बाद, आप Firebase से प्रमाणित करने के लिए Play गेम्स सेवाओं से प्रमाणीकरण कोड का उपयोग कर सकते हैं।

  1. खिलाड़ी द्वारा Play गेम्स का उपयोग करके सफलतापूर्वक साइन इन करने के बाद, साइन-इन निरंतरता हैंडलर में, खिलाड़ी के खाते के लिए एक प्रमाणीकरण कोड प्राप्त करें:

    Social.localUser.Authenticate((bool success) => {
      if (success) {
        authCode = PlayGamesPlatform.Instance.GetServerAuthCode();
      }
    });
    
  2. फिर, फायरबेस क्रेडेंशियल के लिए प्ले गेम्स सेवाओं से ऑथ कोड का आदान-प्रदान करें, और खिलाड़ी को प्रमाणित करने के लिए फायरबेस क्रेडेंशियल का उपयोग करें:

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

अगले कदम

किसी उपयोगकर्ता द्वारा पहली बार साइन इन करने के बाद, एक नया उपयोगकर्ता खाता बनाया जाता है और उनकी प्ले गेम्स आईडी से लिंक किया जाता है। यह नया खाता आपके फायरबेस प्रोजेक्ट के हिस्से के रूप में संग्रहीत है, और इसका उपयोग आपके प्रोजेक्ट में प्रत्येक ऐप में उपयोगकर्ता की पहचान करने के लिए किया जा सकता है।

अपने गेम में, आप 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 वेरिएबल से प्राप्त कर सकते हैं, और इसका उपयोग यह नियंत्रित करने के लिए कर सकते हैं कि उपयोगकर्ता किस डेटा तक पहुंच सकता है।

उपयोगकर्ता की प्ले गेम्स प्लेयर जानकारी प्राप्त करने या प्ले गेम्स सेवाओं तक पहुंचने के लिए, प्ले गेम्स प्लगइन द्वारा प्रदान की गई एपीआई का उपयोग करें।

किसी उपयोगकर्ता को साइन आउट करने के लिए, SignOut() पर कॉल करें:

auth.SignOut();