মাইক্রোসফ্ট এবং ইউনিটি ব্যবহার করে প্রমাণীকরণ করুন

আপনি আপনার ব্যবহারকারীদেরকে Microsoft Azure Active Directory-এর মতো OAuth প্রদানকারী ব্যবহার করে Firebase-এর মাধ্যমে প্রমাণীকরণ করতে দিতে পারেন। যেহেতু এই প্রবাহের জন্য ফোন-ভিত্তিক Firebase SDK ব্যবহার করা প্রয়োজন, তাই এটি শুধুমাত্র Android এবং Apple প্ল্যাটফর্মে সমর্থিত।

তুমি শুরু করার আগে

আপনি Firebase প্রমাণীকরণ ব্যবহার করার আগে, আপনাকে করতে হবে:

  • আপনার ইউনিটি প্রজেক্ট নিবন্ধন করুন এবং Firebase ব্যবহার করতে কনফিগার করুন।

    • আপনার ইউনিটি প্রোজেক্ট যদি আগে থেকেই Firebase ব্যবহার করে, তাহলে এটি ইতিমধ্যেই Firebase-এর জন্য নিবন্ধিত এবং কনফিগার করা আছে।

    • আপনার যদি ইউনিটি প্রজেক্ট না থাকে, আপনি একটি নমুনা অ্যাপ ডাউনলোড করতে পারেন।

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

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

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

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

Firebase SDK দিয়ে সাইন-ইন ফ্লো পরিচালনা করুন

Firebase SDK-এর সাথে সাইন-ইন প্রবাহ পরিচালনা করতে, এই ধাপগুলি অনুসরণ করুন:

  1. Microsoft-এর জন্য উপযুক্ত প্রদানকারী আইডি দিয়ে কনফিগার করা FederatedOAuthProviderData এর একটি উদাহরণ তৈরি করুন।

    Firebase.Auth.FederatedOAuthProviderData providerData =
      new Firebase.Auth.FederatedOAuthProviderData();
    providerData.ProviderId = Firebase.Auth.MicrosoftAuthProvider.ProviderId;
    
  2. ঐচ্ছিক : অতিরিক্ত কাস্টম OAuth প্যারামিটার নির্দিষ্ট করুন যা আপনি OAuth অনুরোধের সাথে পাঠাতে চান।

    providerData.CustomParameters = new Dictionary<string,string>;
    
    // Prompt user to re-authenticate to Microsoft.
    providerData.CustomParameters.Add("prompt", "login");
    
    // Target specific email with login hint.
    providerData.CustomParameters.Add("login_hint",
        "user@firstadd.onmicrosoft.com");
    

    মাইক্রোসফ্ট সমর্থন করে প্যারামিটারগুলির জন্য, Microsoft OAuth ডকুমেন্টেশন দেখুন। মনে রাখবেন যে আপনি setCustomParameters() দিয়ে Firebase-প্রয়োজনীয় প্যারামিটার পাস করতে পারবেন না। এই প্যারামিটারগুলি হল client_id , response_type , redirect_uri , state , scope এবং response_mode

    শুধুমাত্র একটি নির্দিষ্ট Azure AD ভাড়াটে থেকে ব্যবহারকারীদের অ্যাপ্লিকেশনে সাইন ইন করার অনুমতি দেওয়ার জন্য, হয় Azure AD টেন্যান্টের বন্ধুত্বপূর্ণ ডোমেন নাম বা ভাড়াটেদের GUID শনাক্তকারী ব্যবহার করা যেতে পারে। কাস্টম প্যারামিটার অবজেক্টে "ভাড়াটে" ক্ষেত্রটি নির্দিষ্ট করে এটি করা যেতে পারে।

    // Optional "tenant" parameter in case you are using an Azure AD tenant.
    // eg. '8eaef023-2b34-4da1-9baa-8bc8c9d6a490' or 'contoso.onmicrosoft.com'
    // or "common" for tenant-independent tokens.
    // The default value is "common".
    providerData.CustomParameters.Add("tenant", "TENANT_ID");
    
  3. ঐচ্ছিক : মৌলিক প্রোফাইলের বাইরে অতিরিক্ত OAuth 2.0 স্কোপ নির্দিষ্ট করুন যা আপনি প্রমাণীকরণ প্রদানকারীর কাছ থেকে অনুরোধ করতে চান।

    providerData.Scopes = new List<string>();
    providerData.Scopes.Add("mail.read");
    providerData.Scopes.Add("calendars.read");
    

    আরও জানতে, Microsoft অনুমতি এবং সম্মতি ডকুমেন্টেশন পড়ুন।

  4. একবার আপনার প্রদানকারীর ডেটা কনফিগার হয়ে গেলে, একটি FederatedOAuthProvider তৈরি করতে এটি ব্যবহার করুন।

    // Construct a FederatedOAuthProvider for use in Auth methods.
    Firebase.Auth.FederatedOAuthProvider provider = new Firebase.Auth.FederatedOAuthProvider();
    provider.SetProviderData(providerData);
    
  5. Auth প্রদানকারী বস্তু ব্যবহার করে Firebase দিয়ে প্রমাণীকরণ করুন। মনে রাখবেন যে অন্যান্য FirebaseAuth ক্রিয়াকলাপগুলির বিপরীতে, এটি একটি ওয়েব ভিউ পপ আপ করে আপনার UI নিয়ন্ত্রণ করবে যেখানে ব্যবহারকারী তাদের শংসাপত্রগুলি প্রবেশ করতে পারে৷

    সাইন ইন ফ্লো শুরু করতে, SignInAndRetrieveDataWithCredentialAsync কল করুন:

    auth.SignInWithProviderAsync(provider).ContinueOnMainThread(task => {
        if (task.IsCanceled) {
            Debug.LogError("SignInWithProviderAsync was canceled.");
            return;
        }
        if (task.IsFaulted) {
            Debug.LogError("SignInWithProviderAsync encountered an error: " +
              task.Exception);
            return;
        }
    
        Firebase.Auth.AuthResult authResult = task.Result;
        Firebase.Auth.FirebaseUser user = authResult.User;
        Debug.LogFormat("User signed in successfully: {0} ({1})",
            user.DisplayName, user.UserId);
    });
    

    OAuth অ্যাক্সেস টোকেন ব্যবহার করে, আপনি Microsoft Graph API কল করতে পারেন।

    Firebase Auth দ্বারা সমর্থিত অন্যান্য প্রদানকারীদের থেকে ভিন্ন, Microsoft একটি ফটো URL প্রদান করে না এবং পরিবর্তে, একটি প্রোফাইল ছবির জন্য বাইনারি ডেটা Microsoft Graph API এর মাধ্যমে অনুরোধ করতে হবে।

  6. যদিও উপরের উদাহরণগুলি সাইন-ইন প্রবাহের উপর ফোকাস করে, আপনার কাছে LinkWithProviderAsync ব্যবহার করে বিদ্যমান ব্যবহারকারীর সাথে একটি Microsoft Azure Active Directory প্রদানকারীকে লিঙ্ক করার ক্ষমতাও রয়েছে। উদাহরণস্বরূপ, আপনি একই ব্যবহারকারীর সাথে একাধিক প্রদানকারীকে লিঙ্ক করতে পারেন যাতে তাদের উভয়ের সাথে সাইন ইন করতে পারেন৷

    user.LinkWithProviderAsync(provider).ContinueOnMainThread(task => {
        if (task.IsCanceled) {
            Debug.LogError("LinkWithProviderAsync was canceled.");
            return;
        }
        if (task.IsFaulted) {
            Debug.LogError("LinkWithProviderAsync encountered an error: "
              + task.Exception);
            return;
        }
    
        Firebase.Auth.AuthResult authResult = task.Result;
        Firebase.Auth.FirebaseUser user = authResult.User;
        Debug.LogFormat("User linked successfully: {0} ({1})",
            user.DisplayName, user.UserId);
    });
    
  7. একই প্যাটার্ন ReauthenticateWithProviderAsync এর সাথে ব্যবহার করা যেতে পারে যা সাম্প্রতিক লগইন প্রয়োজন এমন সংবেদনশীল অপারেশনগুলির জন্য নতুন শংসাপত্র পুনরুদ্ধার করতে ব্যবহার করা যেতে পারে।

    user.ReauthenticateWithProviderAsync(provider).ContinueOnMainThread(task => {
        if (task.IsCanceled) {
            Debug.LogError("ReauthenticateWithProviderAsync was canceled.");
            return;
        }
        if (task.IsFaulted) {
            Debug.LogError(
            "ReauthenticateWithProviderAsync encountered an error: " +
                task.Exception);
            return;
        }
    
        Firebase.Auth.AuthResult authResult = task.Result;
        Firebase.Auth.FirebaseUser user = authResult.User;
        Debug.LogFormat("User reauthenticated successfully: {0} ({1})",
            user.DisplayName, user.UserId);
    });
    

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

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

  • আপনার অ্যাপে, আপনি 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;
    }
    
  • আপনার ফায়ারবেস রিয়েলটাইম ডেটাবেস এবং ক্লাউড স্টোরেজ সুরক্ষা নিয়মে , আপনি auth ভেরিয়েবল থেকে সাইন-ইন করা ব্যবহারকারীর অনন্য ব্যবহারকারী আইডি পেতে পারেন এবং ব্যবহারকারী কোন ডেটা অ্যাক্সেস করতে পারে তা নিয়ন্ত্রণ করতে এটি ব্যবহার করতে পারেন।

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

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

auth.SignOut();