অ্যান্ড্রয়েডে গুগল প্লে গেম পরিষেবাগুলি ব্যবহার করে প্রমাণীকরণ করুন৷

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

আপনি শুরু করার আগে

আপনার Android প্রকল্প সেট আপ করুন

  1. যদি আপনি ইতিমধ্যেই না করে থাকেন তাহলে আপনার Android প্রকল্পে Firebase যোগ করুন

  2. আপনার মডিউলে (অ্যাপ-লেভেল) গ্রেডল ফাইলে (সাধারণত <project>/<app-module>/build.gradle.kts বা <project>/<app-module>/build.gradle ), 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:33.5.1"))
    
        // 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:21.2.0")
    }

    Firebase Android BoM ব্যবহার করে, আপনার অ্যাপ সবসময় Firebase Android লাইব্রেরির সামঞ্জস্যপূর্ণ সংস্করণ ব্যবহার করবে।

    (বিকল্প) BoM ব্যবহার না করে Firebase লাইব্রেরি নির্ভরতা যোগ করুন

    আপনি যদি Firebase BoM ব্যবহার না করা বেছে নেন, তাহলে আপনাকে অবশ্যই প্রতিটি 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:23.1.0")
    // Also add the dependency for the Google Play services library and specify its version implementation("com.google.android.gms:play-services-auth:21.2.0")
    }
    একটি কোটলিন-নির্দিষ্ট লাইব্রেরি মডিউল খুঁজছেন? অক্টোবর 2023 থেকে শুরু হচ্ছে ( Firebase BoM 32.5.0) , Kotlin এবং Java ডেভেলপাররা প্রধান লাইব্রেরি মডিউলের উপর নির্ভর করতে পারে (বিশদ বিবরণের জন্য, এই উদ্যোগ সম্পর্কে প্রায়শই জিজ্ঞাসিত প্রশ্ন দেখুন)।

আপনার Firebase প্রকল্প সেট আপ করুন

  1. Firebase কনসোলের সেটিংস পৃষ্ঠা থেকে আপনার গেমের SHA-1 ফিঙ্গারপ্রিন্ট সেট করুন।

    আপনি gradle signingReport কমান্ডের সাথে আপনার স্বাক্ষর শংসাপত্রের SHA হ্যাশ পেতে পারেন:

    ./gradlew signingReport

  2. একটি সাইন-ইন প্রদানকারী হিসাবে Google Play গেম সক্ষম করুন:

    1. আপনার প্রকল্পের ওয়েব সার্ভার ক্লায়েন্ট আইডি এবং ক্লায়েন্ট গোপন খুঁজুন. ওয়েব সার্ভার ক্লায়েন্ট আইডি আপনার ফায়ারবেস প্রোজেক্টকে Google Play auth সার্ভারে শনাক্ত করে।

      এই মান খুঁজে পেতে:

      1. Google APIs কনসোল শংসাপত্র পৃষ্ঠায় আপনার Firebase প্রকল্প খুলুন।
      2. OAuth 2.0 ক্লায়েন্ট আইডি বিভাগে, ওয়েব ক্লায়েন্ট (Google পরিষেবা দ্বারা স্বয়ংক্রিয়ভাবে তৈরি) বিবরণ পৃষ্ঠা খুলুন। এই পৃষ্ঠাটি আপনার ওয়েব সার্ভার ক্লায়েন্ট আইডি এবং গোপনীয়তা তালিকাভুক্ত করে।
    2. তারপর, Firebase কনসোলে , প্রমাণীকরণ বিভাগটি খুলুন।

    3. সাইন ইন পদ্ধতি ট্যাবে, প্লে গেমস সাইন-ইন প্রদানকারী সক্ষম করুন। আপনাকে আপনার প্রকল্পের ওয়েব সার্ভার ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট উল্লেখ করতে হবে, যা আপনি APIs কনসোল থেকে পেয়েছেন।

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

  1. Google Play Console- এ, আপনার Google Play অ্যাপ খুলুন বা একটি তৈরি করুন।

  2. গ্রো বিভাগে, Play Games services > সেটআপ এবং পরিচালনা > কনফিগারেশন ক্লিক করুন।

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

  4. Play Games services কনফিগারেশন পৃষ্ঠায়, শংসাপত্র যোগ করুন ক্লিক করুন।

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

    1. অ্যান্ড্রয়েড টাইপ নির্বাচন করুন।
    2. OAuth ক্লায়েন্ট ক্ষেত্রে, আপনার প্রকল্পের Android ক্লায়েন্ট আইডি নির্বাচন করুন। (আপনি যদি আপনার অ্যান্ড্রয়েড ক্লায়েন্ট আইডি দেখতে না পান তবে নিশ্চিত হন যে আপনি Firebase কনসোলে আপনার গেমের SHA-1 ফিঙ্গারপ্রিন্ট সেট করেছেন।)
    3. আপনার পরিবর্তন সংরক্ষণ করুন.
  6. পরীক্ষক পৃষ্ঠায়, Play Store রিলিজ করার আগে আপনার গেমটিতে সাইন ইন করতে সক্ষম হওয়া প্রয়োজন এমন যেকোনো ব্যবহারকারীর ইমেল ঠিকানা যোগ করুন।

আপনার গেমে Play Games সাইন-ইন সংহত করুন

প্রথমে, আপনার অ্যাপে Play Games সাইন-ইন সংহত করুন। সম্পূর্ণ নির্দেশাবলীর জন্য Android গেমগুলিতে সাইন ইন দেখুন।

আপনার ইন্টিগ্রেশনে, আপনি যখন GoogleSignInOptions অবজেক্ট তৈরি করেন, তখন DEFAULT_GAMES_SIGN_IN কনফিগারেশন ব্যবহার করুন এবং requestServerAuthCode কল করুন:

Kotlin+KTX

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 দিয়ে প্রমাণীকরণ করুন

আপনি আপনার অ্যাপে প্লে গেমস সাইন-ইন যোগ করার পর, কোনো প্লেয়ার প্লে গেমসের মাধ্যমে সফলভাবে সাইন ইন করলে আপনি যে Google অ্যাকাউন্টের শংসাপত্রগুলি পান তা ব্যবহার করার জন্য আপনাকে Firebase সেট আপ করতে হবে।

  1. প্রথমে, আপনার সাইন-ইন কার্যকলাপের onCreate পদ্ধতিতে, FirebaseAuth অবজেক্টের ভাগ করা উদাহরণ পান:

Kotlin+KTX

private lateinit var auth: FirebaseAuth
// ...
// Initialize Firebase Auth
auth = Firebase.auth

Java

private FirebaseAuth mAuth;
// ...
// Initialize Firebase Auth
mAuth = FirebaseAuth.getInstance();
  1. আপনার ক্রিয়াকলাপ শুরু করার সময়, প্লেয়ারটি ইতিমধ্যেই Firebase-এর সাথে সাইন ইন করা আছে কিনা তা পরীক্ষা করে দেখুন:

Kotlin+KTX

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);
}
If the player isn't signed in, present the player with your game's
signed-out experience, including the option to sign in.
  1. প্লে গেমগুলির সাথে নীরবে বা ইন্টারেক্টিভভাবে একজন খেলোয়াড় সাইন ইন করার পরে, GoogleSignInAccount অবজেক্ট থেকে প্রমাণীকরণ কোড পান, এটি একটি Firebase শংসাপত্রের জন্য বিনিময় করুন এবং Firebase শংসাপত্র ব্যবহার করে Firebase এর সাথে প্রমাণীকরণ করুন:

Kotlin+KTX

// 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 পদ্ধতি ব্যবহার করতে পারেন।

পরবর্তী পদক্ষেপ

একজন ব্যবহারকারী প্রথমবার সাইন ইন করার পরে, একটি নতুন ব্যবহারকারীর অ্যাকাউন্ট তৈরি করা হয় এবং তাদের প্লে গেম আইডির সাথে লিঙ্ক করা হয়। এই নতুন অ্যাকাউন্টটি আপনার Firebase প্রকল্পের অংশ হিসাবে সংরক্ষণ করা হয়েছে এবং আপনার প্রকল্পের প্রতিটি অ্যাপ জুড়ে একজন ব্যবহারকারীকে শনাক্ত করতে ব্যবহার করা যেতে পারে।

আপনার গেমে, আপনি FirebaseUser অবজেক্ট থেকে ব্যবহারকারীর Firebase UID পেতে পারেন:

Kotlin+KTX

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();

আপনার ফায়ারবেস রিয়েলটাইম ডেটাবেস এবং ক্লাউড স্টোরেজ সুরক্ষা নিয়মে, আপনি auth ভেরিয়েবল থেকে সাইন-ইন করা ব্যবহারকারীর অনন্য ব্যবহারকারী আইডি পেতে পারেন এবং ব্যবহারকারী কোন ডেটা অ্যাক্সেস করতে পারে তা নিয়ন্ত্রণ করতে এটি ব্যবহার করতে পারেন।

একজন ব্যবহারকারীর প্লে গেম প্লেয়ারের তথ্য পেতে বা প্লে গেম পরিষেবাগুলি অ্যাক্সেস করতে, Google Play Games SDK দ্বারা প্রদত্ত API ব্যবহার করুন৷

একজন ব্যবহারকারীকে সাইন আউট করতে, FirebaseAuth.signOut() কল করুন :

Kotlin+KTX

Firebase.auth.signOut()

Java

FirebaseAuth.getInstance().signOut();