আপনি Firebase Authentication ব্যবহার করে ব্যবহারকারীদের আপনার অ্যাপে এক বা একাধিক সাইন-ইন পদ্ধতি, যেমন—ইমেল অ্যাড্রেস ও পাসওয়ার্ড সাইন-ইন এবং গুগল সাইন-ইন ও ফেসবুক লগইনের মতো ফেডারেটেড আইডেন্টিটি প্রোভাইডার ব্যবহার করে সাইন ইন করার অনুমতি দিতে পারেন। এই টিউটোরিয়ালটি আপনার অ্যাপে কীভাবে ইমেল অ্যাড্রেস এবং পাসওয়ার্ড সাইন-ইন যুক্ত করতে হয় তা দেখানোর মাধ্যমে আপনাকে Firebase Authentication ব্যবহারে হাতেখড়ি দেবে।
আপনার C++ প্রজেক্টকে Firebase-এর সাথে সংযুক্ত করুন
Firebase Authentication ব্যবহার করার আগে, আপনাকে নিম্নলিখিত বিষয়গুলো করতে হবে:
আপনার C++ প্রজেক্টটি রেজিস্টার করুন এবং Firebase ব্যবহারের জন্য কনফিগার করুন।
আপনার C++ প্রজেক্টে যদি আগে থেকেই Firebase ব্যবহার করা হয়, তাহলে এটি Firebase-এর জন্য ইতোমধ্যেই নিবন্ধিত এবং কনফিগার করা আছে।
আপনার C++ প্রজেক্টে Firebase C++ SDK যোগ করুন।
মনে রাখবেন যে, আপনার C++ প্রজেক্টে Firebase যোগ করার জন্য Firebase কনসোল এবং আপনার খোলা C++ প্রজেক্ট উভয় স্থানেই কাজ করতে হয় (উদাহরণস্বরূপ, আপনাকে কনসোল থেকে Firebase কনফিগারেশন ফাইলগুলো ডাউনলোড করতে হবে, তারপর সেগুলো আপনার C++ প্রজেক্টে স্থানান্তর করতে হবে)।
নতুন ব্যবহারকারীদের নিবন্ধন করুন
এমন একটি ফর্ম তৈরি করুন যা নতুন ব্যবহারকারীদের তাদের ইমেল ঠিকানা এবং পাসওয়ার্ড ব্যবহার করে আপনার অ্যাপে নিবন্ধন করার সুযোগ দেবে। যখন কোনো ব্যবহারকারী ফর্মটি পূরণ করবেন, তখন তার দেওয়া ইমেল ঠিকানা এবং পাসওয়ার্ড যাচাই করে CreateUserWithEmailAndPassword মেথডে পাঠিয়ে দিন:
firebase::Future<firebase::auth::AuthResult> result =
auth->CreateUserWithEmailAndPassword(email, password);
আপনি CreateUserWithEmailAndPasswordLastResult Future অবজেক্টে একটি কলব্যাক রেজিস্টার করে, অথবা, যদি আপনি পর্যায়ক্রমিক আপডেট লুপ সহ কোনো গেম বা অ্যাপ তৈরি করেন, তাহলে আপডেট লুপের মধ্যে স্ট্যাটাস পোলিং করে অ্যাকাউন্ট তৈরির অপারেশনের স্ট্যাটাস চেক করতে পারেন।
উদাহরণস্বরূপ, একটি Future ব্যবহার করে:
firebase::Future<firebase::auth::AuthResult> result =
auth->CreateUserWithEmailAndPasswordLastResult();
// The lambda has the same signature as the callback function.
result.OnCompletion(
[](const firebase::Future<firebase::auth::AuthResult>& result,
void* user_data) {
// `user_data` is the same as &my_program_context, below.
// Note that we can't capture this value in the [] because std::function
// is not supported by our minimum compiler spec (which is pre C++11).
MyProgramContext* program_context =
static_cast<MyProgramContext*>(user_data);
// Process create user result...
(void)program_context;
},
&my_program_context);
অথবা, পোলিং ব্যবহার করতে, আপনার গেমের আপডেট লুপে নিচের উদাহরণের মতো কিছু করুন:
firebase::Future<firebase::auth::AuthResult> result =
auth->CreateUserWithEmailAndPasswordLastResult();
if (result.status() == firebase::kFutureStatusComplete) {
if (result.error() == firebase::auth::kAuthErrorNone) {
firebase::auth::AuthResult* auth_result = *result.result();
printf("Create user succeeded for email %s\n", auth_result.user.email().c_str());
} else {
printf("Created user failed with error '%s'\n", result.error_message());
}
}
বিদ্যমান ব্যবহারকারীরা সাইন ইন করুন
এমন একটি ফর্ম তৈরি করুন যা বিদ্যমান ব্যবহারকারীদের তাদের ইমেল ঠিকানা এবং পাসওয়ার্ড ব্যবহার করে সাইন ইন করার সুযোগ দেবে। যখন কোনো ব্যবহারকারী ফর্মটি পূরণ করবেন, তখন SignInWithEmailAndPassword মেথডটি কল করুন:
firebase::Future<firebase::auth::AuthResult> result =
auth->SignInWithEmailAndPassword(email, password);
যেভাবে সাইন-আপের ফলাফল পেয়েছিলেন, ঠিক সেভাবেই সাইন-ইন করার ফলাফলও পেয়ে যান।
একটি প্রমাণীকরণ অবস্থা লিসেনার সেট করুন এবং অ্যাকাউন্টের ডেটা সংগ্রহ করুন
সাইন-ইন এবং সাইন-আউট ইভেন্টগুলিতে সাড়া দেওয়ার জন্য, গ্লোবাল অথেন্টিকেশন অবজেক্টে একটি লিসেনার সংযুক্ত করুন। যখনই ব্যবহারকারীর সাইন-ইন অবস্থার পরিবর্তন হয়, তখনই এই লিসেনারটি কল করা হয়। যেহেতু লিসেনারটি শুধুমাত্র অথেন্টিকেশন অবজেক্টটি সম্পূর্ণরূপে ইনিশিয়ালাইজড হওয়ার পরে এবং যেকোনো নেটওয়ার্ক কল সম্পন্ন হওয়ার পরেই চলে, তাই সাইন-ইন করা ব্যবহারকারী সম্পর্কে তথ্য পাওয়ার জন্য এটিই সেরা জায়গা।
firebase::auth::AuthStateListener অ্যাবস্ট্রাক্ট ক্লাসটি ইমপ্লিমেন্ট করে লিসেনারটি তৈরি করুন। উদাহরণস্বরূপ, যখন কোনো ব্যবহারকারী সফলভাবে সাইন ইন করেন তখন তার সম্পর্কে তথ্য পাওয়ার জন্য একটি লিসেনার তৈরি করতে:
class MyAuthStateListener : public firebase::auth::AuthStateListener {
public:
void OnAuthStateChanged(firebase::auth::Auth* auth) override {
firebase::auth::User user = auth.current_user();
if (user.is_valid()) {
// User is signed in
printf("OnAuthStateChanged: signed_in %s\n", user.uid().c_str());
const std::string displayName = user.DisplayName();
const std::string emailAddress = user.Email();
const std::string photoUrl = user.PhotoUrl();
} else {
// User is signed out
printf("OnAuthStateChanged: signed_out\n");
}
// ...
}
};
firebase::auth::Auth অবজেক্টের AddAuthStateListener মেথড ব্যবহার করে লিসেনারটি সংযুক্ত করুন:
MyAuthStateListener state_change_listener;
auth->AddAuthStateListener(&state_change_listener);
পরবর্তী পদক্ষেপ
অন্যান্য আইডেন্টিটি প্রোভাইডার এবং বেনামী গেস্ট অ্যাকাউন্টের জন্য সাপোর্ট কীভাবে যোগ করতে হয় তা জানুন: