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

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

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

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

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

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

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

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

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

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

  2. अपने गेम के SHA-1 फ़िंगरप्रिंट को Firebase कंसोल के सेटिंग पेज से सेट करें, उस कुंजी का उपयोग करके जिसे आपने यूनिटी में सेट किया है।

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

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

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

    gradlew signingReport

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

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

    1. अपने प्रोजेक्ट के वेब सर्वर क्लाइंट आईडी और क्लाइंट सीक्रेट का पता लगाएं। वेब सर्वर क्लाइंट आईडी आपके फ़ायरबेस प्रोजेक्ट को Google Play प्रमाणन सर्वर से पहचानती है।

      इन मूल्यों को खोजने के लिए:

      1. Google API कंसोल क्रेडेंशियल पेज में अपना फायरबेस प्रोजेक्ट खोलें।
      2. OAuth 2.0 क्लाइंट आईडी अनुभाग में, वेब क्लाइंट (Google सेवा द्वारा स्वतः निर्मित) विवरण पृष्ठ खोलें। यह पेज आपके वेब सर्वर क्लाइंट आईडी और सीक्रेट को सूचीबद्ध करता है।
    2. फिर, फायरबेस कंसोल में, प्रमाणीकरण अनुभाग खोलें।

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

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

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

  2. ग्रो सेक्शन में, Play Games services > Setup & Management > Configuration क्लिक करें।

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

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

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

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

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

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

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

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

    1. Android कॉन्फ़िगरेशन स्क्रीन खोलने के लिए विंडो > Google Play गेम्स > सेटअप > Android सेटअप पर क्लिक करें।
    2. Play कंसोल से प्राप्त 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 - गेम्स के साथ साइन इन करना चुनता है, तो Social.localUser.Authenticate() पर कॉल करें:

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

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

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

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

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

    Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
    Firebase.Auth.Credential credential =
        Firebase.Auth.PlayGamesAuthProvider.GetCredential(authCode);
    auth.SignInWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInWithCredentialAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInWithCredentialAsync encountered an error: " + task.Exception);
        return;
      }
    
      Firebase.Auth.FirebaseUser newUser = task.Result;
      Debug.LogFormat("User signed in successfully: {0} ({1})",
          newUser.DisplayName, newUser.UserId);
    });
    

अगले कदम

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

अपने गेम में, आप उपयोगकर्ता के Firebase UID को Firebase.Auth.FirebaseUser ऑब्जेक्ट से प्राप्त कर सकते हैं:

Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null) {
  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 चर से साइन-इन किए गए उपयोगकर्ता की अद्वितीय उपयोगकर्ता आईडी प्राप्त कर सकते हैं, और इसका उपयोग यह नियंत्रित करने के लिए कर सकते हैं कि उपयोगकर्ता किस डेटा तक पहुंच सकता है।

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

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

auth.SignOut();