আপনি আপনার ব্যবহারকারীদেরকে Microsoft Azure Active Directory-এর মতো OAuth প্রদানকারী ব্যবহার করে Firebase-এর মাধ্যমে প্রমাণীকরণ করতে দিতে পারেন। যেহেতু এই প্রবাহের জন্য ফোন-ভিত্তিক Firebase SDK ব্যবহার করা প্রয়োজন, তাই এটি শুধুমাত্র Android এবং Apple প্ল্যাটফর্মে সমর্থিত।
আপনি শুরু করার আগে
- আপনার C++ প্রকল্পে Firebase যোগ করুন ।
- Firebase কনসোলে , Auth বিভাগটি খুলুন।
- সাইন ইন পদ্ধতি ট্যাবে, Microsoft প্রদানকারী সক্ষম করুন।
- সেই প্রদানকারীর ডেভেলপার কনসোল থেকে প্রদানকারী কনফিগারেশনে ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট যোগ করুন:
- একটি Microsoft OAuth ক্লায়েন্ট নিবন্ধন করতে, Quickstart-এর নির্দেশাবলী অনুসরণ করুন: Azure Active Directory v2.0 endpoint এর সাথে একটি অ্যাপ নিবন্ধন করুন । মনে রাখবেন যে এই এন্ডপয়েন্ট Microsoft ব্যক্তিগত অ্যাকাউন্টগুলির পাশাপাশি Azure অ্যাক্টিভ ডিরেক্টরি অ্যাকাউন্টগুলি ব্যবহার করে সাইন-ইন সমর্থন করে৷ Azure Active Directory v2.0 সম্পর্কে আরও জানুন ।
- এই প্রোভাইডারদের সাথে অ্যাপ রেজিস্টার করার সময়, আপনার প্রোজেক্টের জন্য
*.firebaseapp.com
ডোমেনটিকে আপনার অ্যাপের রিডাইরেক্ট ডোমেন হিসেবে রেজিস্টার করতে ভুলবেন না।
- Save এ ক্লিক করুন।
firebase::auth::Auth
ক্লাস অ্যাক্সেস করুন
Auth
ক্লাস হল সমস্ত API কলের গেটওয়ে।- Auth এবং অ্যাপ হেডার ফাইল যোগ করুন:
#include "firebase/app.h" #include "firebase/auth.h"
- আপনার ইনিশিয়ালাইজেশন কোডে, একটি
firebase::App
ক্লাস তৈরি করুন।#if defined(__ANDROID__) firebase::App* app = firebase::App::Create(firebase::AppOptions(), my_jni_env, my_activity); #else firebase::App* app = firebase::App::Create(firebase::AppOptions()); #endif // defined(__ANDROID__)
- আপনার
firebase::App
এর জন্যfirebase::auth::Auth
ক্লাস অর্জন করুন।App
এবংAuth
এর মধ্যে ওয়ান-টু-ওয়ান ম্যাপিং আছে।firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
Firebase SDK দিয়ে সাইন-ইন ফ্লো পরিচালনা করুন
Firebase SDK-এর সাথে সাইন-ইন প্রবাহ পরিচালনা করতে, এই ধাপগুলি অনুসরণ করুন:
Microsoft-এর জন্য উপযুক্ত প্রদানকারী আইডি দিয়ে কনফিগার করা
FederatedOAuthProviderData
এর একটি উদাহরণ তৈরি করুন।firebase::auth::FederatedOAuthProviderData provider_data(firebase::auth::MicrosoftAuthProvider::kProviderId);
ঐচ্ছিক : অতিরিক্ত কাস্টম OAuth প্যারামিটার নির্দিষ্ট করুন যা আপনি OAuth অনুরোধের সাথে পাঠাতে চান।
// Prompt user to re-authenticate to Microsoft. provider_data.custom_parameters["prompt"] = "login"; // Target specific email with login hint. provider_data.custom_parameters["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". provider_data.custom_parameters["tenant"] ="TENANT_ID";
ঐচ্ছিক : মৌলিক প্রোফাইলের বাইরে অতিরিক্ত OAuth 2.0 স্কোপ নির্দিষ্ট করুন যা আপনি প্রমাণীকরণ প্রদানকারীর কাছ থেকে অনুরোধ করতে চান।
provider_data.scopes.push_back("mail.read"); provider_data.scopes.push_back("calendars.read");
আরও জানতে, Microsoft অনুমতি এবং সম্মতি ডকুমেন্টেশন পড়ুন।
একবার আপনার প্রদানকারীর ডেটা কনফিগার হয়ে গেলে, একটি
FederatedOAuthProvider
তৈরি করতে এটি ব্যবহার করুন।// Construct a FederatedOAuthProvider for use in Auth methods. firebase::auth::FederatedOAuthProvider provider(provider_data);
Auth প্রদানকারী বস্তু ব্যবহার করে Firebase দিয়ে প্রমাণীকরণ করুন। মনে রাখবেন যে অন্যান্য FirebaseAuth ক্রিয়াকলাপগুলির বিপরীতে, এটি একটি ওয়েব ভিউ পপ আপ করে আপনার UI নিয়ন্ত্রণ করবে যেখানে ব্যবহারকারী তাদের শংসাপত্রগুলি প্রবেশ করতে পারে৷
সাইন ইন প্রবাহ শুরু করতে,
SignInWithProvider
এ কল করুন:firebase::Future<firebase::auth::AuthResult> result = auth->SignInWithProvider(provider_data);
আপনার আবেদনটি তখন অপেক্ষা করতে পারে বা ভবিষ্যতে একটি কলব্যাক নিবন্ধন করতে পারে৷
OAuth অ্যাক্সেস টোকেন ব্যবহার করে, আপনি Microsoft Graph API কল করতে পারেন।
Firebase Auth দ্বারা সমর্থিত অন্যান্য প্রদানকারীদের থেকে ভিন্ন, Microsoft একটি ফটো URL প্রদান করে না এবং পরিবর্তে, একটি প্রোফাইল ছবির জন্য বাইনারি ডেটা Microsoft Graph API এর মাধ্যমে অনুরোধ করতে হবে।
যদিও উপরের উদাহরণগুলি সাইন-ইন প্রবাহের উপর ফোকাস করে, আপনার কাছে
LinkWithProvider
ব্যবহার করে বিদ্যমান ব্যবহারকারীর সাথে একটি Microsoft Azure Active Directory প্রদানকারীকে লিঙ্ক করার ক্ষমতাও রয়েছে। উদাহরণস্বরূপ, আপনি একই ব্যবহারকারীর সাথে একাধিক প্রদানকারীকে লিঙ্ক করতে পারেন যাতে তাদের উভয়ের সাথে সাইন ইন করতে পারেন৷firebase::Future<firebase::auth::AuthResult> result = user.LinkWithProvider(provider_data);
একই প্যাটার্ন
ReauthenticateWithProvider
এর সাথে ব্যবহার করা যেতে পারে যা সাম্প্রতিক লগইন প্রয়োজন এমন সংবেদনশীল ক্রিয়াকলাপের জন্য নতুন শংসাপত্র পুনরুদ্ধার করতে ব্যবহার করা যেতে পারে।firebase::Future<firebase::auth::AuthResult> result = user.ReauthenticateWithProvider(provider_data);
আপনার আবেদনটি তখন অপেক্ষা করতে পারে বা ভবিষ্যতে একটি কলব্যাক নিবন্ধন করতে পারে৷
পরবর্তী পদক্ষেপ
একজন ব্যবহারকারী প্রথমবার সাইন ইন করার পরে, একটি নতুন ব্যবহারকারীর অ্যাকাউন্ট তৈরি করা হয় এবং শংসাপত্রগুলির সাথে লিঙ্ক করা হয়—অর্থাৎ, ব্যবহারকারীর নাম এবং পাসওয়ার্ড, ফোন নম্বর, বা প্রমাণ প্রদানকারীর তথ্য — ব্যবহারকারী সাইন ইন করেছেন। এই নতুন অ্যাকাউন্টটি আপনার ফায়ারবেস প্রকল্পের অংশ হিসাবে সংরক্ষণ করা হয়েছে এবং ব্যবহারকারী কীভাবে সাইন ইন করুন না কেন, আপনার প্রকল্পের প্রতিটি অ্যাপ জুড়ে একজন ব্যবহারকারীকে শনাক্ত করতে ব্যবহার করা যেতে পারে।
আপনার অ্যাপে, আপনি
firebase::auth::User
অবজেক্ট থেকে ব্যবহারকারীর মৌলিক প্রোফাইল তথ্য পেতে পারেন:firebase::auth::User user = auth->current_user(); if (user.is_valid()) { std::string name = user.display_name(); std::string email = user.email(); std::string photo_url = user.photo_url(); // 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 firebase::auth::User::Token() instead. std::string uid = user.uid(); }
আপনার Firebase Realtime Database এবং Cloud Storage সুরক্ষা নিয়মে , আপনি
auth
ভেরিয়েবল থেকে সাইন-ইন করা ব্যবহারকারীর অনন্য ব্যবহারকারী আইডি পেতে পারেন এবং ব্যবহারকারী কোন ডেটা অ্যাক্সেস করতে পারে তা নিয়ন্ত্রণ করতে এটি ব্যবহার করতে পারেন।
একজন ব্যবহারকারীকে সাইন আউট করতে, SignOut()
কল করুন :
auth->SignOut();