Firebase-এ তৈরি করা Android গেমে প্লেয়ারদের সাইন-ইন করাতে
আপনি Google Play Games পরিষেবা ব্যবহার করতে পারবেন। Firebase-এর মাধ্যমে Google Play Games পরিষেবাতে সাইন-ইন করতে,
প্রথমে Google Play Games-এর মাধ্যমে প্লেয়ারকে সাইন-ইন করান এবং এটি করার সময় OAuth 2.0 auth
কোডের জন্য অনুরোধ করুন। তারপরে, Firebase ক্রেডেনশিয়াল জেনারেট করতে
PlayGamesAuthProvider-কে auth কোড দিন, যা আপনি Firebase-এর সাথে যাচাই করার জন্য ব্যবহার করতে পারবেন।
শুরু করার আগে
আপনার Android প্রোজেক্ট সেট-আপ করা
আপনি আগে থেকে না করে থাকলে, আপনার Android প্রোজেক্টে Firebase যোগ করুন।
আপনার মডিউল (অ্যাপ-লেভেল) Gradle ফাইলে (সাধারণত
<project>/<app-module>/build.gradle.ktsবা<project>/<app-module>/build.gradle), Android-এর জন্য Firebase Authentication লাইব্রেরির ডিপেন্ডেন্সি যোগ করুন। লাইব্রেরি ভার্সনিং কন্ট্রোল করতে Firebase Android BoM ব্যবহার করার সাজেশন দিই।এছাড়াও, Firebase Authentication সেট-আপ করার অংশ হিসেবে, আপনাকে নিজের অ্যাপে Google Play পরিষেবা SDK যোগ করতে হবে।
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:35.0.0")) // Add the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth")
// Also add the dependency for the Google Play services library and specify its version implementation("com.google.android.gms:play-services-auth:22.0.0") }Firebase Android BoM ব্যবহার করার মাধ্যমে, আপনার অ্যাপ সবসময় Firebase Android লাইব্রেরির মানানসই ভার্সন ব্যবহার করবে।
(বিকল্প) BoM ব্যবহার না করে Firebase লাইব্রেরি নির্ভরতা যোগ করুন
আপনি Firebase BoM ব্যবহার না করার বিকল্প বেছে নিলে, আপনাকে অবশ্যই এর ডিপেন্ডেন্সি লাইনে প্রতিটি Firebase লাইব্রেরি ভার্সন উল্লেখ করতে হবে।
মনে রাখবেন, আপনার অ্যাপে একাধিক Firebase লাইব্রেরি ব্যবহার করলে, লাইব্রেরি ভার্সন ম্যানেজ করার জন্য আমরা BoM ব্যবহার করার জন্য অত্যন্ত সাজেস্ট করি, এটি নিশ্চিত করে যে সব ভার্সনই মানানসই।
dependencies { // Add the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth:25.0.0")
// Also add the dependency for the Google Play services library and specify its version implementation("com.google.android.gms:play-services-auth:22.0.0") }
আপনার Firebase প্রোজেক্ট সেট-আপ করা
Firebase কনসোলে, নিরাপত্তা > যাচাইকরণ বিকল্পে যান।
সেটিংস ট্যাবে, আপনার গেমের SHA-1 ফিঙ্গারপ্রিন্ট সেট করুন।
আপনি gradle
signingReportকমান্ডের মাধ্যমে আপনার সাইনিং সার্টিফিকেটের SHA হ্যাশ পেতে পারেন:./gradlew signingReport
সাইন-ইন পরিষেবা প্রদানকারী হিসেবে Google Play Games চালু করুন:
আপনার প্রোজেক্টের ওয়েব সার্ভার ক্লায়েন্ট আইডি ও ক্লায়েন্ট সিক্রেট খুঁজুন। ওয়েব সার্ভার ক্লায়েন্ট আইডি, Google Play Auth সার্ভারের কাছে আপনার Firebase প্রোজেক্টের পরিচয় দেয়।
এইসব ভ্যালু খুঁজে পেতে:
- আপনার Firebase প্রোজেক্টটি Google API কনসোলের ক্রেডেনশিয়াল পৃষ্ঠায় খুলুন।
- OAuth 2.0 ক্লায়েন্ট আইডি বিভাগে, ওয়েব ক্লায়েন্ট (Google পরিষেবা অটোমেটিক তৈরি করেছে) বিবরণ পৃষ্ঠা খুলুন। এই পৃষ্ঠায় আপনার ওয়েব সার্ভার ক্লায়েন্ট আইডি ও সিক্রেট তালিকাভুক্ত করা আছে।
Firebase কনসোলে ফিরে গিয়ে, নিরাপত্তা > অনুমোদন বিকল্পে যান।
সাইন-ইন পদ্ধতি ট্যাবে, Play Games সাইন-ইন প্রোভাইডার চালু করুন। আপনাকে নিজের প্রজেক্টের ওয়েব সার্ভার ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট উল্লেখ করতে হবে, যা আপনি API কনসোল থেকে পেয়েছেন।
আপনার 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 Store-এ গেম রিলিজ করার আগে আপনার গেমে সাইন-ইন করতে হবে, তাদের ইমেল আইডি যোগ করুন।
আপনার গেমে Play Games সাইন-ইন ইন্টিগ্রেট করা
প্রথমে, আপনার অ্যাপে Play Games সাইন-ইন ইন্টিগ্রেট করুন। সম্পূর্ণ নির্দেশাবলীর জন্য Android গেমসে সাইন-ইন করুন লিঙ্কে দেখুন।
আপনার ইন্টিগ্রেশনে, GoogleSignInOptions অবজেক্ট তৈরি করার সময়, DEFAULT_GAMES_SIGN_IN কনফিগারেশন ব্যবহার করুন এবং requestServerAuthCode কল করুন:
Kotlin
val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN) .requestServerAuthCode(getString(R.string.default_web_client_id)) .build()
Java
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN) .requestServerAuthCode(getString(R.string.default_web_client_id)) .build();
আপনাকে অবশ্যই requestServerAuthCode পদ্ধতিতে আপনার ওয়েব সার্ভার ক্লায়েন্ট আইডি পাস করতে হবে।
আপনি
Firebase কনসোলে Play Games সাইন-ইন চালু করার সময় এই আইডিটি দিয়েছেন।
Firebase-এর মাধ্যমে যাচাইকরণ
আপনার অ্যাপে Play Games সাইন-ইন যোগ করার পরে, প্লেয়ার Play Games-এ সফলভাবে সাইন-ইন করলে আপনি যে Google অ্যাকাউন্ট ক্রেডেনশিয়াল পান সেটি ব্যবহার করার জন্য আপনাকে Firebase সেট-আপ করতে হবে।
প্রথমে, আপনার সাইন-ইন অ্যাক্টিভিটির
onCreateপদ্ধতিতে,FirebaseAuthঅবজেক্টের শেয়ার করা ইনস্ট্যান্স পান:Kotlin
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
আপনার অ্যাক্টিভিটি শুরু করার সময়, প্লেয়ার Firebase-এ আগে থেকেই সাইন-ইন করে আছে কিনা তা চেক করে দেখুন:
Kotlin
override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser updateUI(currentUser) }
Java
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); updateUI(currentUser); }
প্লেয়ার সাইন-ইন না করে থাকলে, তাকে সাইন-ইন করার বিকল্প সহ আপনার গেমের সাইন-আউট অভিজ্ঞতা দেখান।
কোনও প্লেয়ার Play Games-এ নীরবে বা ইন্ট্যার্যাক্টিভ পদ্ধতিতে সাইন-ইন করার পরে,
GoogleSignInAccountঅবজেক্ট থেকে অথরাইজেশন কোড পান, এটিকে Firebase ক্রেডেনশিয়ালের সাথে এক্সচেঞ্জ করুন এবং Firebase ক্রেডেনশিয়াল ব্যবহার করে Firebase-এর সাথে যাচাই করুন:Kotlin
// Call this both in the silent sign-in task's OnCompleteListener and in the // Activity's onActivityResult handler. private fun firebaseAuthWithPlayGames(acct: GoogleSignInAccount) { Log.d(TAG, "firebaseAuthWithPlayGames:" + acct.id!!) val auth = Firebase.auth val credential = PlayGamesAuthProvider.getCredential(acct.serverAuthCode!!) auth.signInWithCredential(credential) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithCredential:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithCredential:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } // ... } }
Java
// Call this both in the silent sign-in task's OnCompleteListener and in the // Activity's onActivityResult handler. private void firebaseAuthWithPlayGames(GoogleSignInAccount acct) { Log.d(TAG, "firebaseAuthWithPlayGames:" + acct.getId()); final FirebaseAuth auth = FirebaseAuth.getInstance(); AuthCredential credential = PlayGamesAuthProvider.getCredential(acct.getServerAuthCode()); auth.signInWithCredential(credential) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithCredential:success"); FirebaseUser user = auth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithCredential:failure", task.getException()); Toast.makeText(MainActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } // ... } }); }
signInWithCredential-এ কল করা সফল হলে, আপনি ব্যবহারকারীর অ্যাকাউন্ট ডেটা পেতেgetCurrentUserপদ্ধতি ব্যবহার করতে পারবেন।
পরবর্তী ধাপ
কোনও ব্যবহারকারী প্রথমবার সাইন-ইন করার পরে, একটি নতুন ব্যবহারকারীর অ্যাকাউন্ট তৈরি করা হয় এবং সেটি তার Play Games আইডির সাথে লিঙ্ক করা হয়। এই নতুন অ্যাকাউন্টটি আপনার Firebase প্রোজেক্টের অংশ হিসেবে স্টোর করা হয় এবং আপনার প্রোজেক্টের প্রতিটি অ্যাপ জুড়ে কোনও ব্যবহারকারীকে শনাক্ত করতে এটি ব্যবহার করা যেতে পারে।
আপনার গেমে, FirebaseUser
অবজেক্ট থেকে ব্যবহারকারীর Firebase UID পেতে পারেন:
Kotlin
val user = auth.currentUser user?.let { val playerName = it.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 FirebaseUser.getIdToken() instead. val uid = it.uid }
Java
FirebaseUser user = mAuth.getCurrentUser(); String playerName = user.getDisplayName(); // 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 FirebaseUser.getIdToken() instead. String uid = user.getUid();
আপনার Firebase Realtime Database এবং Cloud Storage Security Rules-এ, আপনি auth ভেরিয়েবল থেকে
সাইন-ইন করা ব্যবহারকারীর অনন্য ব্যবহারকারী আইডি পেতে এবং
কোন ডেটা ব্যবহারকারী অ্যাক্সেস করতে পারবেন তা নিয়ন্ত্রণ করতে এটি ব্যবহার করতে পারবেন।
কোনও ব্যবহারকারীর Play Games প্লেয়ার সংক্রান্ত তথ্য পেতে অথবা Play Games পরিষেবা অ্যাক্সেস করতে, Google Play Games SDK-এর দেওয়া API ব্যবহার করুন।
কোনও ব্যবহারকারীকে সাইন-আউট করতে, FirebaseAuth.signOut()-এ কল করুন:
Kotlin
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();