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

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

শুরু করার আগে

আপনার অ্যান্ড্রয়েড প্রোজেক্ট সেট আপ করুন

  1. যদি আপনি ইতিমধ্যেই না করে থাকেন, তাহলে আপনার অ্যান্ড্রয়েড প্রজেক্টে Firebase যোগ করুন

  2. আপনার মডিউল (অ্যাপ-লেভেল) গ্র্যাডেল ফাইলে (সাধারণত <project>/<app-module>/build.gradle.kts অথবা <project>/<app-module>/build.gradle ), Android এর জন্য Firebase Authentication লাইব্রেরির জন্য নির্ভরতা যোগ করুন। লাইব্রেরি সংস্করণ নিয়ন্ত্রণ করতে আমরা Firebase Android BoM ব্যবহার করার পরামর্শ দিই।

    এছাড়াও, Firebase Authentication সেট আপ করার অংশ হিসেবে, আপনার অ্যাপে Google Play services SDK যোগ করতে হবে।

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.9.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:21.5.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:24.0.1")
    // Also add the dependency for the Google Play services library and specify its version implementation("com.google.android.gms:play-services-auth:21.5.0")
    }

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

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

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

    ./gradlew signingReport

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

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

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

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

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

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

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

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

  3. হ্যাঁ, আমার গেমটি ইতিমধ্যেই Google API ব্যবহার করে -এ ক্লিক করুন, তালিকা থেকে আপনার Firebase প্রকল্পটি নির্বাচন করুন এবং তারপর Use -এ ক্লিক করুন।

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

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

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

আপনার গেমে Play Games সাইন-ইন ইন্টিগ্রেট করুন

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

আপনার ইন্টিগ্রেশনে, যখন আপনি 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 সাইন-ইন যোগ করার পরে, আপনাকে Firebase সেট আপ করতে হবে যাতে আপনি Google অ্যাকাউন্টের শংসাপত্রগুলি ব্যবহার করতে পারেন যা আপনি Play Games দিয়ে সফলভাবে সাইন ইন করলে পাবেন।

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

Kotlin

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

Java

private FirebaseAuth mAuth;
// ...
// Initialize Firebase Auth
mAuth = FirebaseAuth.getInstance();
  1. আপনার অ্যাক্টিভিটি শুরু করার সময়, প্লেয়ারটি ইতিমধ্যেই 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);
}
If the player isn't signed in, present the player with your game's
signed-out experience, including the option to sign in.
  1. কোনও খেলোয়াড় নীরবে বা ইন্টারেক্টিভভাবে 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 ID এর সাথে লিঙ্ক করা হয়। এই নতুন অ্যাকাউন্টটি আপনার 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 রিয়েলটাইম ডেটাবেস এবং ক্লাউড স্টোরেজ সুরক্ষা নিয়মে, আপনি auth ভেরিয়েবল থেকে সাইন-ইন করা ব্যবহারকারীর অনন্য ব্যবহারকারী আইডি পেতে পারেন এবং ব্যবহারকারী কোন ডেটা অ্যাক্সেস করতে পারবেন তা নিয়ন্ত্রণ করতে এটি ব্যবহার করতে পারেন।

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

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

Kotlin

Firebase.auth.signOut()

Java

FirebaseAuth.getInstance().signOut();