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

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

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

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

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

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

  2. Unity Editor में, Build Settings > Player Settings > Other Settings में जाकर, अपने गेम का Android पैकेज का नाम सेट करें.

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

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

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

  2. अपने गेम का SHA-1 फ़िंगरप्रिंट डालें.

    1. Firebase कंसोल में, सेटिंग सेटिंग > सामान्य टैब पर जाएं.

    2. स्क्रोल करके आपके ऐप्लिकेशन कार्ड पर जाएं. इसके बाद, अपना 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 पर इस कुंजी से हस्ताक्षर किए जाने चाहिए. यह शर्त, डेवलपमेंट के दौरान भी लागू होती है.

  3. Google Play Games को साइन-इन की सुविधा देने वाले प्लैटफ़ॉर्म के तौर पर चालू करें:

    1. Firebase कंसोल में, सुरक्षा > पुष्टि करना पर जाएं.

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

      1. साइन-इन का तरीका टैब में, Google साइन-इन की सुविधा देने वाले प्लैटफ़ॉर्म को चालू करें.

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

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

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

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

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

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

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

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

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

    1. Android Configuration स्क्रीन खोलने के लिए, Window > Google Play Games > Setup > Android Setup पर क्लिक करें.
    2. Play Console से मिले Android के संसाधन स्निपेट को, Resources Definition फ़ील्ड में चिपकाएं.
    3. वेब सर्वर क्लाइंट आईडी को Client ID फ़ील्ड में चिपकाएं. यह आईडी आपने 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 में साइन इन करने की सुविधा जोड़ने के बाद, Play Games की सेवाओं से मिले ऑथराइज़ेशन कोड का इस्तेमाल करके, Firebase से पुष्टि की जा सकती है.

  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 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 के रीयल टाइम डेटाबेस और Cloud Storage के सुरक्षा नियमों में, auth वैरिएबल से, साइन इन किए हुए उपयोगकर्ता का यूनीक आईडी हासिल किया जा सकता है. इसका इस्तेमाल, यह कंट्रोल करने के लिए किया जा सकता है कि कोई उपयोगकर्ता किस डेटा को ऐक्सेस कर सकता है.

किसी उपयोगकर्ता की Play Games की खिलाड़ी की जानकारी पाने या Play Games की सेवाओं को ऐक्सेस करने के लिए, Play Games प्लगिन से मिले एपीआई का इस्तेमाल करें.

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

auth.SignOut();