Google Play গেম পরিষেবাগুলি ব্যবহার করে ইউনিটিতে প্রমাণীকরণ করুন৷

আপনি Firebase এবং Unity-তে তৈরি একটি অ্যান্ড্রয়েড গেমে খেলোয়াড়দের সাইন ইন করাতে Google Play Games পরিষেবা ব্যবহার করতে পারেন। Firebase-এর সাথে Google Play Games পরিষেবা ব্যবহার করে সাইন-ইন করতে, প্রথমে Google Play Games-এ খেলোয়াড়কে সাইন ইন করান এবং সেই সময়ে একটি OAuth 2.0 অথোরাইজেশন কোডের জন্য অনুরোধ করুন। তারপর, একটি Firebase ক্রেডেনশিয়াল তৈরি করার জন্য PlayGamesAuthProvider এ অথোরাইজেশন কোডটি পাঠান, যা আপনি Firebase-এর সাথে অথেন্টিকেট করতে ব্যবহার করতে পারবেন।

শুরু করার আগে

আপনার ইউনিটি প্রজেক্ট সেট আপ করুন

  1. "আপনার ইউনিটি প্রজেক্টে ফায়ারবেস যোগ করুন" অংশে বর্ণিত পদ্ধতি অনুসারে আপনার ইউনিটি প্রজেক্টে ফায়ারবেস কনফিগ ফাইল এবং Firebase Unity এসডিকে যোগ করুন। অ্যান্ড্রয়েডের জন্য দেওয়া নির্দেশাবলী অনুসরণ করুন।

    FirebaseAuth.unitypackage ইম্পোর্ট করতে ভুলবেন না।

  2. ইউনিটি এডিটরে, বিল্ড সেটিংস > প্লেয়ার সেটিংস > অন্যান্য সেটিংস- এর অধীনে আপনার গেমের অ্যান্ড্রয়েড প্যাকেজ নামটি সেট করুন।

  3. এরপর, Build Settings > Player Settings > Publishing Settings- এর অধীনে, একটি কীস্টোর এবং কী নির্বাচন বা তৈরি করুন, যা আপনার অ্যান্ড্রয়েড প্যাকেজ সাইন করতে ব্যবহৃত হবে। প্লে গেমস সাইন-ইন কাজ করার জন্য আপনার APK অবশ্যই সাইন করা থাকতে হবে—এই শর্তটি শুধু গেম প্রকাশ করার ক্ষেত্রেই নয়, বরং এর বিকাশের সময়েও প্রযোজ্য।

আপনার ফায়ারবেস প্রজেক্ট সেট আপ করুন

  1. Firebase কনসোলে , সেই Firebase প্রজেক্টটিতে যান যেখানে আপনি আপনার Unity প্রজেক্টটি রেজিস্টার করেছেন।

  2. আপনার গেমের SHA-1 ফিঙ্গারপ্রিন্ট নির্দিষ্ট করুন।

    1. Firebase কনসোলে, এখানে যান > সাধারণ ট্যাব

    2. নিচে স্ক্রল করে 'Your apps' কার্ডে যান, আপনার অ্যান্ড্রয়েড অ্যাপটি নির্বাচন করুন এবং 'SHA certificate fingerprints' ফিল্ডে আপনার 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 কনসোলে, Security > Authentication- এ যান।

    2. আপনার প্রোজেক্টের ওয়েব সার্ভার ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট তৈরি ও সংগ্রহ করুন:

      1. সাইন-ইন পদ্ধতি ট্যাবে, গুগল সাইন-ইন প্রদানকারীকে সক্রিয় করুন।

      2. গুগল সাইন-ইন প্রোভাইডার থেকে ওয়েব সার্ভার ক্লায়েন্ট আইডি এবং সিক্রেট কপি করুন।

    3. সাইন-ইন পদ্ধতি ট্যাবে, Play Games সাইন-ইন প্রোভাইডারটি সক্রিয় করুন এবং আপনার প্রোজেক্টের ওয়েব সার্ভার ক্লায়েন্ট আইডি ও ক্লায়েন্ট সিক্রেট উল্লেখ করুন, যা আপনি গত ধাপে পেয়েছিলেন।

আপনার Firebase অ্যাপের তথ্য দিয়ে Play Games services কনফিগার করুন

  1. Google Play কনসোলে আপনার Google Play অ্যাপটি খুলুন অথবা একটি তৈরি করুন।

  2. Grow সেকশনে, Play Games services > Setup & Management > Configuration- এ ক্লিক করুন।

  3. ‘হ্যাঁ, আমার গেমটি ইতিমধ্যেই গুগল এপিআই ব্যবহার করে’ বিকল্পে ক্লিক করুন, তালিকা থেকে আপনার ফায়ারবেস প্রজেক্টটি বেছে নিন এবং তারপরে ‘ ব্যবহার করুন’ বিকল্পে ক্লিক করুন।

  4. Play Games services কনফিগারেশন পৃষ্ঠায়, ক্রেডেনশিয়াল যোগ করুন (Add Credential) বোতামে ক্লিক করুন।

    1. গেম সার্ভারের ধরন নির্বাচন করুন।
    2. OAuth ক্লায়েন্ট ফিল্ডে, আপনার প্রজেক্টের ওয়েব ক্লায়েন্ট আইডি নির্বাচন করুন। নিশ্চিত করুন যে এটি সেই একই ক্লায়েন্ট আইডি যা আপনি Play Games সাইন-ইন সক্রিয় করার সময় উল্লেখ করেছিলেন।
    3. আপনার পরিবর্তনগুলো সংরক্ষণ করুন।
  5. Play Games services কনফিগারেশন পৃষ্ঠাতেই, আবার ক্রেডেনশিয়াল যোগ করুন (Add Credential) বোতামে ক্লিক করুন।

    1. অ্যান্ড্রয়েডের ধরন নির্বাচন করুন।
    2. OAuth ক্লায়েন্ট ফিল্ডে আপনার প্রোজেক্টের অ্যান্ড্রয়েড ক্লায়েন্ট আইডি নির্বাচন করুন। (যদি আপনি আপনার অ্যান্ড্রয়েড ক্লায়েন্ট আইডি দেখতে না পান, তবে নিশ্চিত হয়ে নিন যে আপনি Firebase কনসোলে আপনার গেমের SHA-1 ফিঙ্গারপ্রিন্ট সেট করেছেন।)
    3. আপনার পরিবর্তনগুলো সংরক্ষণ করুন।
  6. ইভেন্টস , অ্যাচিভমেন্টস এবং লিডারবোর্ডস পেজগুলোতে, আপনার গেমের সাথে ব্যবহার করতে চান এমন যেকোনো Play Games রিসোর্স তৈরি করুন (যদি আপনি এখনই কোনোটি ব্যবহার করতে না চান, তাহলে একটি প্লেসহোল্ডার এন্ট্রি তৈরি করতে পারেন)। এরপর, ইভেন্টস , অ্যাচিভমেন্টস বা লিডারবোর্ডস পেজগুলোর যেকোনো একটিতে, ‘গেট রিসোর্সেস’ (Get resources) এ ক্লিক করুন এবং অ্যান্ড্রয়েড রিসোর্স স্নিপেটটি সুবিধাজনক কোনো জায়গায় কপি করুন। 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 প্রকাশ করার আগে গেমে সাইন ইন করার প্রয়োজন হবে।

আপনার গেমে প্লে গেমস সাইন-ইন সংযুক্ত করুন।

  1. ইউনিটির জন্য প্লে গেমস প্লাগইনের সর্বশেষ রিলিজটি ডাউনলোড করে এক্সট্র্যাক্ট করুন।

  2. আপনার ইউনিটি প্রজেক্টে প্লাগইনটির ইউনিটি প্যাকেজ ইম্পোর্ট করুন। আপনি রিলিজ আর্কাইভের current-build ডিরেক্টরিতে ইউনিটি প্যাকেজটি খুঁজে পাবেন।

  3. প্লে গেমস প্লাগইনটি সেট আপ করুন:

    1. অ্যান্ড্রয়েড কনফিগারেশন স্ক্রিনটি খুলতে উইন্ডো > গুগল প্লে গেমস > সেটআপ > অ্যান্ড্রয়েড সেটআপ-এ ক্লিক করুন।
    2. প্লে কনসোল থেকে পাওয়া অ্যান্ড্রয়েড রিসোর্স স্নিপেটটি রিসোর্স ডেফিনিশন ফিল্ডে পেস্ট করুন।
    3. Firebase কনসোলে প্লে গেমস সাইন-ইন চালু করার সময় আপনি যে ওয়েব সার্ভার ক্লায়েন্ট আইডিটি দিয়েছিলেন, সেটি ক্লায়েন্ট আইডি ফিল্ডে পেস্ট করুন।
    4. সেটআপ-এ ক্লিক করুন।
  4. আপনার গেমে, 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. তারপর, যখন কোনো খেলোয়াড় প্লে গেমস দিয়ে সাইন ইন করতে চায়, তখন Social.localUser.Authenticate() কল করুন:

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

ফায়ারবেস দিয়ে প্রমাণীকরণ করুন

আপনার গেমে প্লে গেমস সাইন-ইন যোগ করার পর, আপনি ফায়ারবেসের সাথে প্রমাণীকরণের জন্য প্লে গেমস পরিষেবা থেকে প্রাপ্ত প্রমাণীকরণ কোডটি ব্যবহার করতে পারবেন।

  1. প্লেয়ার প্লে গেমস ব্যবহার করে সফলভাবে সাইন ইন করার পর, সাইন-ইন কন্টিনিউয়েশন হ্যান্ডলারে, প্লেয়ারের অ্যাকাউন্টের জন্য একটি অথ কোড নিন:

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

আপনার Firebase Realtime Database and Cloud Storage Security Rules-এ, আপনি auth ভেরিয়েবল থেকে সাইন-ইন করা ব্যবহারকারীর অনন্য ইউজার আইডি পেতে পারেন এবং এটি ব্যবহার করে একজন ব্যবহারকারী কোন ডেটা অ্যাক্সেস করতে পারবে তা নিয়ন্ত্রণ করতে পারেন।

কোনো ব্যবহারকারীর প্লে গেমস প্লেয়ারের তথ্য পেতে বা প্লে গেমস পরিষেবাগুলো অ্যাক্সেস করতে, প্লে গেমস প্লাগইন দ্বারা প্রদত্ত এপিআইগুলো ব্যবহার করুন।

কোনো ব্যবহারকারীকে সাইন আউট করতে, SignOut() কল করুন:

auth.SignOut();