Google সাইন-ইন ও Unity ব্যবহার করে যাচাইকরণ

আপনার অ্যাপে Google সাইন-ইন ইন্টিগ্রেট করার মাধ্যমে, আপনি ব্যবহারকারীদের তাদের Google অ্যাকাউন্ট ব্যবহার করে Firebase-এর মাধ্যমে যাচাই করার অনুমতি দিতে পারেন।

শুরু করার আগে

আপনার Unity প্রোজেক্ট সেট-আপ করুন

Firebase Authentication ব্যবহার করার আগে, আপনাকে যা করতে হবে:

  • আপনার Unity প্রোজেক্ট রেজিস্টার করুন এবং Firebase ব্যবহার করার জন্য এটি কনফিগার করুন।

    • আপনার Unity প্রোজেক্টে আগে থেকেই Firebase ব্যবহার করা হলে, সেটি আগে থেকেই Firebase-এর জন্য রেজিস্টার ও কনফিগার করা আছে।

    • আপনার কোনও Unity প্রোজেক্ট না থাকলে, আপনি একটি স্যাম্পেল অ্যাপ ডাউনলোড করতে পারবেন।

  • আপনার Unity প্রোজেক্টে Firebase Unity SDK (বিশেষ করে, FirebaseAuth.unitypackage) যোগ করুন।

মনে রাখবেন, আপনার Unity প্রোজেক্টে Firebase যোগ করার জন্য Firebase কনসোল এবং আপনার খোলা Unity প্রোজেক্ট, দুটিতেই টাস্ক থাকে (যেমন, আপনি কনসোল থেকে Firebase কনফিগারেশন ফাইল ডাউনলোড করেন, তারপর সেগুলি আপনার Unity প্রোজেক্টে সরান)।

আপনার Firebase প্রোজেক্ট ও ক্রেডেনশিয়াল সেট-আপ করুন

  1. Android: Firebase কনসোলে আপনার অ্যাপের SHA-1 ফিঙ্গারপ্রিন্ট উল্লেখ করুন:

    1. Firebase কনসোলে, সেটিংস > সাধারণ ট্যাব বিকল্পে যান।
    2. আপনার অ্যাপ কার্ডে যান, আপনার Android অ্যাপ বেছে নিন এবং SHA সার্টিফিকেট ফিঙ্গারপ্রিন্ট ফিল্ডে আপনার SHA-1 ফিঙ্গারপ্রিন্ট যোগ করুন।

      keytool ব্যবহার করে আপনার কীস্টোরের SHA-1 ফিঙ্গারপ্রিন্ট ফিরিয়ে আনতে পারবেন:

      keytool -keystore path-to-keystore.keystore -list -v
      

      আপনার অ্যাপের SHA ফিঙ্গারপ্রিন্ট পাওয়ার ব্যাপারে আরও জানতে আপনার ক্লায়েন্টকে যাচাই করা দেখুন।

  2. Google Sign-In চালু করুন এবং আপনার ওয়েব ক্লায়েন্ট আইডি কপি করুন:

    1. Firebase কনসোলে, নিরাপত্তা > যাচাইকরণ বিকল্পে যান।
    2. সাইন-ইন পদ্ধতি ট্যাবে, Google সাইন-ইন পরিষেবা প্রদানকারী চালু করুন।
    3. Web SDK কনফিগারেশন বিভাগটি বড় করে আপনার ওয়েব ক্লায়েন্ট আইডি (যেমন, 123456-abc.apps.googleusercontent.com) কপি করুন। এটি আপনার আইডি টোকেনের দর্শক (aud) দাবিকে উপস্থাপন করে এবং Android ও iOS উভয়ের জন্যই প্রয়োজন।
    4. সেভ করুন বিকল্পে ক্লিক করুন।
    ক্রেডেনশিয়াল পৃষ্ঠা থেকে আপনার OAuth-এর সম্মতি সংক্রান্ত স্ক্রিন এবং ক্লায়েন্ট আইডি দেখতে ও ম্যানেজ করতে পারবেন।
  3. আপনার Firebase কনফিগারেশন ফাইল আপডেট করুন এবং আপনার iOS রিভার্সড ক্লায়েন্ট আইডি কপি করুন:

    1. Firebase কনসোল (Android-এর জন্য google-services.json এবং iOS-এর জন্য GoogleService-Info.plist) থেকে লেটেস্ট Firebase কনফিগারেশন ফাইল ডাউনলোড করুন এবং আপনার Unity প্রোজেক্টে পুরনো কপি থাকলে তা পাল্টে দিন। (আপনার Unity প্রোজেক্টে Firebase যোগ করুন দেখুন।)
    2. iOS: আপনার GoogleService-Info.plist ফাইল খুলুন এবং REVERSED_CLIENT_ID কী-এর ভ্যালু কপি করুন (যেমন, com.googleusercontent.apps.12345-abc)। iOS রিডাইরেক্ট URL স্কিম কনফিগার করতে এই ভ্যালু প্রয়োজন।

আপনার Unity প্রোজেক্টে Google Sign-In প্লাগ-ইন ইন্টিগ্রেট করুন

  1. প্লাগ-ইন ইমপোর্ট করুন:

    1. আপনি যদি আগে থেকে থাকা কোনও প্রোজেক্টে ইন্টিগ্রেট করেন, তাহলে আপনার প্রোজেক্টের ব্যাক-আপ নিন এবং এগিয়ে যাওয়ার আগে পুরনো Google Sign-In প্লাগ-ইন সরিয়ে দিন।
    2. GoogleSignInNative.unitypackage GitHub থেকে ডাউনলোড করুন এবং আপনার Unity প্রোজেক্টে এটি ইমপোর্ট করুন (অ্যাসেট > প্যাকেজ ইমপোর্ট করুন > কাস্টম প্যাকেজ)। সব ফাইল বেছে নেওয়া হয়েছে কিনা তা নিশ্চিত করুন এবং ইমপোর্ট করুন বিকল্পে ক্লিক করুন।
  2. প্লাগ-ইন সেটিংস কনফিগার করুন:

    1. Unity Editor-এ, Window > Google Sign-In Native > সেটিংস বিকল্পে যান।
    2. প্রথম ফিল্ডে আপনার ওয়েব ক্লায়েন্ট আইডি পেস্ট করুন।
    3. দ্বিতীয় ফিল্ডে আপনার iOS রিভার্সড ক্লায়েন্ট আইডি পেস্ট করুন।
    4. সেটিংস সেভ করুন বিকল্পে ক্লিক করুন।
  3. নেটিভ ডিপেন্ডেন্সি সংক্রান্ত সমস্যার সমাধান করা:

    1. অ্যাসেট > এক্সটার্নাল ডিপেন্ডেন্সি ম্যানেজার > Android রিজলভার > ফোর্স রিজলভ বিকল্পে যান।
    2. প্রক্রিয়াটি সম্পূর্ণ হওয়ার মেসেজ না পাওয়া পর্যন্ত অপেক্ষা করুন। এটি নেটিভ googleid এবং androidx ক্রেডেনশিয়াল ম্যানেজার লাইব্রেরি ডাউনলোড করে।

Firebase.Auth.FirebaseAuth ক্লাস অ্যাক্সেস করুন

FirebaseAuth ক্লাস হল সব API কলের গেটওয়ে। এটি FirebaseAuth.DefaultInstance-এর মাধ্যমে অ্যাক্সেস করা যায়।
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

Firebase-এর মাধ্যমে যাচাই করুন

  1. আপনার দৃশ্যে GoogleSignInManager সেট-আপ করুন:

    1. আপনার প্রাথমিক দৃশ্যে একটি খালি GameObject তৈরি করুন যার নাম GoogleSignInManager।
    2. এতে GoogleSignInManager.cs স্ক্রিপ্ট অ্যাটাচ করুন।
    3. GoogleSignInNativeSettings অ্যাসেট ( Assets/GoogleSignInNative/Resources-এ অবস্থিত) স্ক্রিপ্টের সাইন-ইন সেটিংস স্লটে টেনে আনুন।
  2. Google Sign-In ট্রিগার করুন এবং Firebase ক্রেডেনশিয়ালের জন্য আইডি টোকেন এক্সচেঞ্জ করুন:

    একটি কন্ট্রোলার স্ক্রিপ্ট তৈরি করুন যা GoogleSignInManager.OnSignInCompleted এবং GoogleSignInManager.OnSignInFailed-এ সাবস্ক্রাইব করে, GoogleSignInManager.Instance.StartSignIn()-এর মাধ্যমে সাইন-ইন ট্রিগার করে এবং GoogleAuthProvider.GetCredential ব্যবহার করে Firebase ক্রেডেনশিয়ালের জন্য Google ID টোকেন এক্সচেঞ্জ করে:

    using Firebase.Auth;
    using Firebase.Extensions;
    using UnityEngine;
    
    public class MyAuthController : MonoBehaviour
    {
        private FirebaseAuth auth;
    
        private void Awake()
        {
            auth = FirebaseAuth.DefaultInstance;
        }
    
        private void OnEnable()
        {
            GoogleSignInManager.OnSignInCompleted += HandleSignInSuccess;
            GoogleSignInManager.OnSignInFailed += HandleSignInFailure;
        }
    
        private void OnDisable()
        {
            GoogleSignInManager.OnSignInCompleted -= HandleSignInSuccess;
            GoogleSignInManager.OnSignInFailed -= HandleSignInFailure;
        }
    
        public void OnSignInButtonClick()
        {
            GoogleSignInManager.Instance.StartSignIn();
        }
    
        private void HandleSignInSuccess(string idToken)
        {
            Debug.Log("[Auth] Google Sign-In succeeded. Authenticating with Firebase...");
    
            Credential credential = GoogleAuthProvider.GetCredential(idToken, null);
            auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWithOnMainThread(task => {
                if (task.IsCanceled)
                {
                    Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled.");
                    return;
                }
                if (task.IsFaulted)
                {
                    Debug.LogError("SignInAndRetrieveDataWithCredentialAsync encountered an error: " + task.Exception);
                    return;
                }
    
                AuthResult result = task.Result;
                Debug.LogFormat("User signed in successfully: {0} ({1})",
                    result.User.DisplayName, result.User.UserId);
            });
        }
    
        private void HandleSignInFailure(string error)
        {
            Debug.LogError($"[Auth] Google Sign-In failed: {error}");
        }
    }
    

আপনার অ্যাপ তৈরি করুন

Android

  • প্লেয়ার সেটিংস-এ আপনার প্যাকেজের নাম Firebase এবং Google Cloud OAuth ক্রেডেনশিয়ালের সাথে হুবহু মিলছে কিনা তা ভালোভাবে দেখে নিন।
  • আপনার ন্যূনতম API লেভেল ৩৪ বা তার বেশি সেট করা আছে কিনা তা নিশ্চিত করুন।
  • তৈরি করুন ও চালান বিকল্পে ক্লিক করুন।

iOS

  • Xcode প্রোজেক্ট তৈরি করতে Unity-তে আপনার প্রোজেক্ট তৈরি করুন, তারপর তৈরি করা .xcworkspace ফাইলটি খুলুন।
  • Xcode-এ, স্বাক্ষর ও ক্ষমতা ট্যাবে যান এবং আপনার ডেভেলপমেন্ট টিম বেছে নিন।
  • প্লাগ-ইনটি আপনার Xcode প্রোজেক্টে কাস্টম URL স্কিম (REVERSED_CLIENT_ID) অটোমেটিক যোগ করে। ফিজিক্যাল ডিভাইসে তৈরি ও রান করা।

পরবর্তী ধাপ

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

  • আপনার অ্যাপে, আপনি Firebase.Auth.FirebaseUser অবজেক্ট থেকে ব্যবহারকারীর প্রাথমিক প্রোফাইল তথ্য পেতে পারেন:

    Firebase.Auth.FirebaseUser user = auth.CurrentUser;
    if (user != null) {
      string name = user.DisplayName;
      string email = user.Email;
      System.Uri photo_url = user.PhotoUrl;
      // 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 নিরাপত্তা সংক্রান্ত নিয়মে, আপনি auth ভেরিয়েবল থেকে সাইন-ইন করা ব্যবহারকারীর অনন্য ব্যবহারকারী আইডি পেতে পারেন এবং কোনও ব্যবহারকারী কোন ডেটা অ্যাক্সেস করতে পারবেন তা নিয়ন্ত্রণ করতে এটি ব্যবহার করতে পারেন।

আগে থেকে থাকা ব্যবহারকারীর অ্যাকাউন্টে অথেন্টিকেশন প্রদানকারীর ক্রেডেনশিয়াল লিঙ্ক করে আপনি একাধিক অথেন্টিকেশন প্রদানকারী ব্যবহার করে ব্যবহারকারীদের আপনার অ্যাপে সাইন-ইন করার অনুমতি দিতে পারেন।

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

auth.SignOut();