Firebase ও Unity-তে তৈরি Android গেমে প্লেয়ারদের সাইন-ইন করার জন্য আপনি Google Play Games পরিষেবা ব্যবহার করতে পারবেন। Firebase-এর মাধ্যমে সাইন-ইন করে Google Play Games পরিষেবা ব্যবহার করতে,
প্রথমে Google Play Games-এর মাধ্যমে প্লেয়ারকে সাইন-ইন করান এবং এটি করার সময়
OAuth 2.0 অথ কোডের অনুরোধ করুন। তারপর, Firebase ক্রেডেনশিয়াল জেনারেট করতে
PlayGamesAuthProvider-এ অথ কোডটি দিন, যা আপনি Firebase-এর সাথে
যাচাইকরণ করতে ব্যবহার করতে পারবেন।
শুরু করার আগে
আপনার Unity প্রোজেক্ট সেট-আপ করা
Firebase কনফিগারেশন ফাইল এবং Firebase Unity SDK আপনার Unity প্রোজেক্টে যোগ করুন যেমন আপনার Unity প্রোজেক্টে Firebase যোগ করুন নিবন্ধে বর্ণনা করা হয়েছে। Android-এর জন্য নির্দেশাবলী অনুসরণ করুন।
FirebaseAuth.unitypackageইমপোর্ট করতে ভুলবেন না।Unity Editor-এ, বিল্ড সেটিংস > প্লেয়ার সেটিংস > অন্যান্য সেটিংস বিকল্পের মধ্যে আপনার গেমের Android প্যাকেজের নাম সেট করুন।
তারপর, বিল্ড সেটিংস > প্লেয়ার সেটিংস > প্রকাশনা সেটিংস বিকল্পের অধীনে, কিস্টোর ও কী বেছে নিন বা তৈরি করুন, যা আপনার Android প্যাকেজ সাইন করার জন্য ব্যবহার করা হবে। Play Games সাইন-ইন যাতে কাজ করে, সেই জন্য আপনার APK-তে অবশ্যই সাইন-ইন করতে হবে—এই প্রয়োজনীয়তা শুধু প্রকাশ করার ক্ষেত্রেই নয়, আপনার গেমের ডেভেলপমেন্টের সময়ও প্রযোজ্য।
আপনার Firebase প্রোজেক্ট সেট-আপ করা
Firebase কনসোলে, Firebase প্রোজেক্টে যান যেখানে আপনার Unity প্রোজেক্ট রেজিস্টার করেছেন।
আপনার গেমের SHA-1 ফিঙ্গারপ্রিন্ট উল্লেখ করুন।
Firebase কনসোলে,
সেটিংস > সাধারণ ট্যাব বিকল্পে যান।নিচের দিকে স্ক্রল করে আপনার অ্যাপ কার্ডে যান, আপনার 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-কে এই কী দিয়ে সাইন করতে হবে।
সাইন-ইন পরিষেবা প্রদানকারী হিসেবে Google Play Games চালু করুন:
Firebase কনসোলে, নিরাপত্তা > যাচাইকরণ বিকল্পে যান।
আপনার প্রোজেক্টের ওয়েব সার্ভার ক্লায়েন্ট আইডি ও ক্লায়েন্ট সিক্রেট তৈরি ও সংগ্রহ করুন:
সাইন-ইন পদ্ধতি ট্যাবে, Google সাইন-ইন প্রোভাইডার চালু করুন।
Google সাইন-ইন প্রোভাইডার থেকে ওয়েব সার্ভার ক্লায়েন্ট আইডি ও সিক্রেট কপি করুন।
সাইন-ইন পদ্ধতি ট্যাবে, Play Games সাইন-ইন প্রদানকারী চালু করুন এবং আপনার প্রজেক্টের ওয়েব সার্ভার ক্লায়েন্ট আইডি ও ক্লায়েন্ট সিক্রেট উল্লেখ করুন, যা আপনি আগের ধাপে পেয়েছেন।
আপনার Firebase অ্যাপের তথ্য দিয়ে Play Games services কনফিগার করুন
Google Play কনসোলে, আপনার Google Play অ্যাপ খুলুন অথবা একটি তৈরি করুন।
বাড়ান বিভাগে, Play Games services > সেট-আপ ও ম্যানেজমেন্ট > কনফিগারেশন বিকল্পে ক্লিক করুন।
হ্যাঁ, আমার গেম আগে থেকেই Google API ব্যবহার করে বিকল্পে ক্লিক করুন, তালিকা থেকে আপনার Firebase প্রজেক্ট বেছে নিন এবং তারপর ব্যবহার করুন বিকল্পে ক্লিক করুন।
Play Games services কনফিগারেশন পৃষ্ঠায়, ক্রেডেনশিয়াল যোগ করুন বিকল্পে ক্লিক করুন।
- গেম সার্ভার ধরন বেছে নিন।
- OAuth ক্লায়েন্ট ফিল্ডে, আপনার প্রোজেক্টের ওয়েব ক্লায়েন্ট আইডি বেছে নিন। সাইন-ইন চালু করার সময় আপনি যে ক্লায়েন্ট আইডি Play Games উল্লেখ করেছিলেন, এটি সেই একই আইডি কিনা তা নিশ্চিত করুন।
- আপনার করা পরিবর্তন সেভ করুন।
এখনও Play Games services কনফিগারেশন পৃষ্ঠায়, আবার ক্রেডেনশিয়াল যোগ করুন বিকল্পে ক্লিক করুন।
- Android ধরন বেছে নিন।
- OAuth ক্লায়েন্ট ফিল্ডে, আপনার প্রোজেক্টের Android ক্লায়েন্ট আইডি বেছে নিন। (আপনি Android ক্লায়েন্ট আইডি দেখতে না পেলে, নিশ্চিত করুন যে আপনি Firebase কনসোলে আপনার গেমের SHA-1 ফিঙ্গারপ্রিন্ট সেট করেছেন।)
- আপনার করা পরিবর্তন সেভ করুন।
ইভেন্ট, কৃতিত্ব ও লিডারবোর্ড পৃষ্ঠায়, আপনার গেমের সাথে ব্যবহার করতে চান এমন যেকোনও 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>টেস্টার পৃষ্ঠায়, যে ব্যবহারকারীদের Play Store-এ গেম রিলিজ করার আগে আপনার গেমে সাইন-ইন করতে হবে, তাদের ইমেল আইডি যোগ করুন।
আপনার গেমে Play Games সাইন-ইন ইন্টিগ্রেট করা
Unity-র জন্য Play Games প্লাগ-ইন এর লেটেস্ট রিলিজ ডাউনলোড করে এক্সট্র্যাক্ট করুন।
আপনার Unity প্রোজেক্টে প্লাগ-ইনের Unity প্যাকেজ ইমপোর্ট করুন। রিলিজ আর্কাইভের
current-buildডিরেক্টরিতে Unity প্যাকেজটি খুঁজে পাবেন।Play Games প্লাগ-ইন সেট-আপ করুন:
- Window > Google Play Games > সেট-আপ > Android সেট-আপ বিকল্পে ক্লিক করে Android কনফিগারেশন স্ক্রিন খুলুন।
- Play Console থেকে পাওয়া Android রিসোর্স স্নিপেটটি রিসোর্স সংজ্ঞা ফিল্ডে পেস্ট করুন।
- Firebase কনসোলে Play Games সাইন-ইন করার সুবিধা চালু করার সময় আপনি যে ওয়েব সার্ভার ক্লায়েন্ট আইডি দিয়েছিলেন সেটি ক্লায়েন্ট আইডি ফিল্ডে পেস্ট করুন।
- সেট-আপ করুন বিকল্পে ক্লিক করুন।
আপনার গেমে,
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();তারপরে, কোনও প্লেয়ার Play Games-এ সাইন-ইন করার বিকল্প বেছে নিলে, কল করুন
Social.localUser.Authenticate():Social.localUser.Authenticate((bool success) => { // handle success or failure });
Firebase-এর মাধ্যমে যাচাইকরণ
আপনার গেমে Play Games সাইন-ইন যোগ করার পরে, Firebase-এর সাথে যাচাই করার জন্য আপনি Play Games পরিষেবা থেকে অনুমোদন কোড ব্যবহার করতে পারবেন।
প্লেয়ার Play Games ব্যবহার করে সফলভাবে সাইন-ইন করার পরে, সাইন-ইন কন্টিনিউয়েশন হ্যান্ডলার থেকে প্লেয়ারের অ্যাকাউন্টের জন্য একটি অথরাইজেশন কোড পান:
Social.localUser.Authenticate((bool success) => { if (success) { authCode = PlayGamesPlatform.Instance.GetServerAuthCode(); } });তারপর, Firebase ক্রেডেনশিয়ালের জন্য Play Games পরিষেবা থেকে পাওয়া অথ কোডটি এক্সচেঞ্জ করুন এবং প্লেয়ারকে যাচাই করতে 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 Realtime Database এবং Cloud Storage Security Rules-এ, আপনি auth ভেরিয়েবল থেকে
সাইন-ইন করা ব্যবহারকারীর অনন্য ব্যবহারকারী আইডি পেতে এবং
কোন ডেটা ব্যবহারকারী অ্যাক্সেস করতে পারবেন তা নিয়ন্ত্রণ করতে এটি ব্যবহার করতে পারবেন।
কোনও ব্যবহারকারীর Play Games প্লেয়ার সংক্রান্ত তথ্য পেতে বা Play Games পরিষেবা অ্যাক্সেস করতে, Play Games প্লাগ-ইন দ্বারা প্রদত্ত API ব্যবহার করুন।
কোনও ব্যবহারকারীকে সাইন-আউট করতে, SignOut()-এ কল করুন:
auth.SignOut();